首页 > 解决方案 > 解决此问题的最佳方法是什么

问题描述

所以,一点背景故事。我一直在研究 cel shaded 3d rpg 一段时间了。它将具有在基于动作和基于回合之间切换的选项。不过那是以后的事了。

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

我使用的 onCollisionEnter 是带有 comparetag<> 函数的。

知道我在统一 2019.4.X 上可能也很重要

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

标签: c#visual-studiounity3dgame-development

解决方案


如果您不掷剑,Raycasts 不适合您。您正在使用正确的方式(碰撞),但您错过了一点:

  • 当发生碰撞时,这不会发生一次。很多碰撞是连续发生的。

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

或者您可以使用布尔值(例如swordSwingCollisionActive)。如果在挥动剑后发生碰撞,则将此布尔值设置为true。挥剑结束后,你又走false了。就写if (swordSwingCollisionActive) return;在开头OnCollisionEnter


推荐阅读