碰撞自动攻击

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

【讨论】:

以上是关于碰撞自动攻击的主要内容,如果未能解决你的问题,请参考以下文章

一种高级的DoS攻击-Hash碰撞攻击

如何防止因哈希碰撞引起的DoS攻击

如何防止因哈希碰撞引起的DoS攻击

如何防止因哈希碰撞引起的DoS攻击

[转帖] 阮一峰:哈希碰撞与生日攻击

14040802(攻击骨骼控制)