我有一颗子弹,当它击中一个目标时,它应该将分数增加1.但是分数增加2.子弹是一个带有对撞机和rigibody的太空舱,目标是一个带有对撞机和rigibody的圆柱体
子弹上的代码
$http({
method: 'POST',
url: '/contact-form.php',
data: $.param($scope.formData), //param method from jQuery
headers: { 'Content-Type': 'application/x-www-form-urlencoded' } //set the headers so angular passing info as form data (not request payload)
})
得分代码
public class Bullet : MonoBehaviour {
float lifespan = 2;
void Start()
{
// destroy the bullet
Destroy(gameObject, lifespan);
}
void OnTriggerEnter(Collider other) //collider event
{
if (other.gameObject.CompareTag("Score"))
{
Score.score = Score.score + 1;
}
}
}
答案 0 :(得分:4)
之前我已经解决了这个确切的问题,但是我搜索它以将其标记为重复但无法找到它。它可能已被OP删除。
您的分数可能会多次更新有两种可能的原因。
1 。您的脚本(Bullet
)多次附加到您的GameObject。这很可能是问题所在。它很可能附加到随机的空GameObject。
<强>修正:强>
A 。检查gameObject.AddComponent<Bullet>();
是否在项目的任何脚本中都不存在。 AddComponent
将为您的GameObject添加新的Bullet。
B 。通过编辑器在GameObjects上搜索重复的脚本。
选择您的Bullet
脚本,转到资产 - &gt; 在场景中查找引用。它将向您显示附加了此脚本的每个GameObject。除了你的子弹GameObject之外,将它从所有这些中删除。
2 。您在GameObject上有多个对撞机。也许是小时候的对手。你必须找到一种方法来处理它。如果是这种情况,您可以通过将它们放在单独的标记中并检查它来忽略子对撞机。
您已经在检查标签了。只需将子对撞机的标签更改为其他不是&#34;得分&#34; 的标签,以便other.gameObject.CompareTag("Score")
不会true
。