对于侧面滚动游戏,我需要攻击与我的玩家范围发生碰撞的敌人,这是我的方式:
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之前停止&GT; nextFire;
我在方法的开头尝试了Debug.Log,看起来OnCollisionStay在调试冻结后不再被调用,这在第一次攻击后大约1s - time.deltaTime发生。
所以我不知道怎么做,基本上这里是一维横向滚动,你可以从右到左,这应该很简单,但我不明白。
答案 0 :(得分:0)
您可以考虑为武器创建一个射击率,以便一次可以更改为一个子弹或连续射击。你可以控制它。也喜欢光线投射而不是碰撞。有一个2D平台游戏教程,但我非常喜欢Brackeys的那个。