碰撞自动攻击
Posted
技术标签:
【中文标题】碰撞自动攻击【英文标题】:Auto attacking on collision 【发布时间】: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 左右。
所以我不知道怎么做,基本上这里是一维横向滚动,你可以从右到左,这应该很简单但我不明白。
【问题讨论】:
【参考方案1】:您可以考虑为武器创建一个射速,以便它可以一次更改为一颗子弹或连续开火。您将可以控制它。也更喜欢光线投射而不是碰撞。有一个 2D 平台游戏教程,但我非常喜欢 Brackeys 的那个。
YouTube Playlist
【讨论】:
以上是关于碰撞自动攻击的主要内容,如果未能解决你的问题,请参考以下文章