Unity3d OnTiggerEnter2D被多次调用
我是Unity的新手,如果这是一个基本问题,请提前道歉,我附加了一个变量,该变量应在每次触发OnTiggerEnter2D时加1。然而,它不是加1,而是不断地加。能告诉我我做错了什么吗 这就是我所说的Unity3d OnTiggerEnter2D被多次调用,unity3d,triggers,2d,Unity3d,Triggers,2d,我是Unity的新手,如果这是一个基本问题,请提前道歉,我附加了一个变量,该变量应在每次触发OnTiggerEnter2D时加1。然而,它不是加1,而是不断地加。能告诉我我做错了什么吗 这就是我所说的 public class MonsterTarget : MonoBehaviour { public Resetter Resetting; public ScoreCount ScoreHit; public float targetHit = 0; // Use this for
public class MonsterTarget : MonoBehaviour {
public Resetter Resetting;
public ScoreCount ScoreHit;
public float targetHit = 0;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void OnTriggerEnter2D(Collider2D col)
{
targetHit ++;
Resetting.Reset();
}
}
这就是它要去的地方
public MonsterTarget monTarget;
public Text scoreText;
public Text highScoreText;
public float scoreCount;
public float highScoreCount;
public bool scoreIncreasing;
// Use this for initialization
void Start () {
if(PlayerPrefs.HasKey("HighScore"))
{
highScoreCount = PlayerPrefs.GetFloat("HighScore");
}
}
// Update is called once per frame
void Update () {
if (scoreIncreasing)
{
scoreCount += monTarget.targetHit;//RIGH HERE IS WHERE IM CALLING IT
}
if (scoreCount > highScoreCount)
{
highScoreCount = scoreCount;
PlayerPrefs.SetFloat("HighScore", highScoreCount);
}
scoreText.text = "Score: " + Mathf.Round(scoreCount);
highScoreText.text = "High Score: " + Mathf.Round(highScoreCount);
}
}“脚本系统可以检测何时发生碰撞,并使用OnCollisionCenter功能启动操作。但是,您也可以使用物理引擎简单地检测何时一个碰撞器进入另一个碰撞器的空间而不创建碰撞。配置为触发器的碰撞器(使用Is触发器属性)不会表现为实体对象,只允许其他碰撞器通过。当碰撞器进入其空间时,触发器将调用触发器对象脚本上的OnTriggerEnter函数。”
从
我想可能是的,因为你的对象在触发空间内,所以它不断被调用
当碰撞器进入其空间时,触发器将调用触发器对象脚本上的OnTriggerEnter函数。
这可能意味着targetHit++当您的对象通过另一个对象的碰撞空间时,代码>不断被调用
我建议您尝试使用onCollisionInter2d()
,因为这样您的对象将发生碰撞,但不会相互穿过