我有一些脚本试图使用标签,我认为脚本工作直到我制作我的teleoprter脚本。对撞机部件必须是错误的,但我无法弄清楚标签部件如何或为何不起作用。当调用collider标签时,它会使用on oncollisionenter部分
调用所有脚本我会告诉你我试过的2个代码 2个标签是“CC”和“门”
void OnTriggerEnter (Collider CC)
{
if (collider.gameObject.tag == "CC")
{
Debug.Log ("Combat Chance Roll");
isCombat = false;
CombatChance = Random.Range (1, 100);
Probability = 20;
if (CombatChance <= Probability) {
isCombat = true;
isCombat2 = true;
} else {
isCombat = false;
isCombat2 = false;
}
}
void OnTriggerEnter (Collider Door)
{
if (collider.gameObject.tag == "Door")
{
transform.position = new Vector3 (0.0f, 0.51f, -17.0f);
}
}
这些是两个独立的脚本,都在播放器上,寻找对撞机标签
所以当我打开门时我会传送并检查CombatChanceRoll 我只想打电话给门而不是两个。反之亦然
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~
我必须工作的代码,但不确定是否有更好的方法
void OnTriggerEnter (Collider CC)
{
switch (CC.tag)
{
case "CC":
Debug.Log ("Combat Chance Roll");
isCombat = false;
CombatChance = Random.Range (1, 100);
Probability = 20;
if (CombatChance <= Probability) {
isCombat = true;
isCombat2 = true;
} else {
isCombat = false;
isCombat2 = false;
}
break;
}
答案 0 :(得分:1)
将if
语句更改为switch
语句将不解决您的问题。我只是仔细看看你的代码,我发现代码中有两个错误。
更改if (collider.gameObject.tag == "CC")
到
if (CC.gameObject.tag == "CC")
然后更改(collider.gameObject.tag == "Door")
到
if (Door.gameObject.tag == "Door")
所以你的最终代码应如下所示:
void OnTriggerEnter (Collider CC)
{
if (CC.gameObject.tag == "CC")
{
Debug.Log ("Combat Chance Roll");
isCombat = false;
CombatChance = Random.Range (1, 100);
Probability = 20;
if (CombatChance <= Probability) {
isCombat = true;
isCombat2 = true;
} else {
isCombat = false;
isCombat2 = false;
}
}
AND
void OnTriggerEnter (Collider Door)
{
if (Door.gameObject.tag == "Door")
{
transform.position = new Vector3 (0.0f, 0.51f, -17.0f);
}
}
同样避免将代码与==
或开关语句进行比较。请改用CompareTag
功能。例如,if (CC.gameObject.CompareTag("CC"))
和if (Door.gameObject.CompareTag("Door"))