【发布时间】:2015-07-10 08:35:54
【问题描述】:
对于横向滚动游戏,我需要攻击与我的玩家范围相撞的敌人,这是我的做法:
void OnCollisionStay2D(Collision2D coll) {
Enemy target = coll.gameObject.GetComponent <Enemy> ();
if (target != null) {
moving = false;
anim.SetBool ("attack", true);
target.Damage (damageValue);
}
}
问题是我每帧都会造成damageValue 伤害,所以我想添加一个冷却时间,如下所示:
void OnCollisionStay2D(Collision2D coll) {
Enemy target = coll.gameObject.GetComponent <Enemy> ();
if (target != null && time.time > nextFire) {
moving = false;
anim.SetBool ("attack", true);
target.Damage (damageValue);
nextFire = Time.time + 1;//I set the cooldown to 1 second
}
}
问题是玩家攻击了一次,并且再也没有,我尝试在 OnCollisionStay 方法结束时调试.Log(Time.time),并且调试垃圾邮件在 Time.time 之前停止> nextFire;
我尝试在方法开始时进行 Debug.Log,并且在此调试冻结后似乎不再调用 OnCollisionStay,这发生在第一次攻击后的 1s - time.deltaTime 左右。
所以我不知道怎么做,基本上这里是一维横向滚动,你可以从右到左,这应该很简单但我不明白。
【问题讨论】:
标签: unity3d