比较 UnityScript 中的标签

Compare tags in UnityScript

我们正在构建 3D 游戏,现在我遇到了一个问题,我需要比较多个标签来激活或停用将玩家送回重生位置的触发器。

这是目前的代码:

#pragma strict

var spawnPoint : GameObject;

function OnTriggerStay ( other : Collider )
{
    if (other.tag == "Player" && other.tag != "Ball")
    {
        other.tag == "Player";
        other.gameObject.transform.position = spawnPoint.transform.position;
    }

    else if ( other.tag == "Ball" && other.tag == "Player" )
    {

    }
}

我不确定如何解决此问题以执行以下操作:

如果玩家在没有球与其碰撞的情况下触碰扳机,则玩家会重生。这是为了营造粒子杀死你的感觉。 如果玩家在有球碰撞时触动扳机,则玩家不会有任何反应,因此玩家可以自由通过。

我们想要做的是将一个球推到间歇泉上方,使其覆盖它,如果间歇泉未被覆盖并且玩家试图越过它,则玩家会重生。

我们还尝试了另一个代码,虽然它允许球传球,但不允许玩家传球。即使在球被放置之后。

#pragma strict

var spawnPoint : GameObject;

function OnTriggerStay ( other : Collider )
{
    if (other.tag == "Ball")
    {
        other.enabled = false;
    }

    else if (other.tag == "Player")
    {
        other.gameObject.transform.position = spawnPoint.transform.position;
    }
}

所以,我相信你的问题是,当你使用那个函数时,你只是在检查第一次碰撞。所以发生的事情是你得到球员或球的价值,而不是两者。您需要存储所有碰撞,以便比较所有碰撞。为此,您可以按照本文档的一般说明进行操作。 http://docs.unity3d.com/ScriptReference/Collision-contacts.html 它在谈论碰撞,但同样的一般原则应该适用。

希望对您有所帮助!