最好的方法是什么

What is the best way to go about this

所以,有点背景故事。我一直在研究一个 cel 阴影 3d 角色扮演游戏。它将有在基于动作和回合制之间切换的选项。那是以后的事了。

我的问题是我想添加一种在剑与敌人碰撞时对其造成伤害的方法。我知道 onCollisionEnter 是一种方法,我也知道光线投射是一种不同但更复杂的方法。 我希望每次挥剑都能逐渐伤害敌人(现在是史莱姆,以后会有更多敌人。)而不是立即死亡。我之前尝试过 onCollisionEnter,但无法让它逐渐减少。 只是,好吧……瞬间死亡

我用过的onCollisionEnter是带comparetag<>功能的。

知道我在 2019 年团结一致可能也很重要。4.X

我尝试过使用 unity 2020.x,但它对我的 PC 来说太费力了,因为每次我做某事时都会出现应用程序加载问题,这很烦人。

如果你不是剑客,Raycasts不适合你。你使用的方法是正确的(碰撞),但是你漏掉了一点:

  • 发生碰撞时不会发生一次。许多碰撞连续发生。

为避免这种情况,您可以在发生碰撞时短时间关闭其中一个碰撞器。 (也就是说:如果敌人有100血,我方每击减20血,连续碰撞5次以上,所以,我们就是一举秒杀敌人。)

或者您可以使用布尔值(例如 swordSwingCollisionActive)。如果在挥剑之后发生碰撞,则将此 bool 值设置为 true。挥剑结束后,你再去falseOnCollisionEnter开头写if (swordSwingCollisionActive) return;即可。