我们正在构建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;
}
}
答案 0 :(得分:0)
所以,我相信你的问题是,当你使用那个功能时,你只是检查第一次碰撞。所以发生的事情是你获得球员或球的价值,而不是两者。您需要存储所有碰撞,以便比较所有碰撞。为此,您可以按照本文档的说明进行操作。 http://docs.unity3d.com/ScriptReference/Collision-contacts.html 它在讨论碰撞,但同样的一般原则应该适用。
希望这有帮助!