c# - 解决此问题的最佳方法是什么
问题描述
所以,一点背景故事。我一直在研究 cel shaded 3d rpg 一段时间了。它将具有在基于动作和基于回合之间切换的选项。不过那是以后的事了。
我的问题是我想添加一种在剑与敌人碰撞时伤害敌人的方法。我知道 onCollisionEnter 是一种方法,我也知道光线投射是一种不同但更复杂的方法。我希望每次挥剑都能对敌人造成伤害(现在是史莱姆,以后有更多的敌人。)而不是立即死亡。我之前尝试过 onCollisionEnter ,但无法让它逐渐减少。只是,嗯……当场死亡
我使用的 onCollisionEnter 是带有 comparetag<> 函数的。
知道我在统一 2019.4.X 上可能也很重要
我曾尝试使用 unity 2020.x,但它对我的 PC 来说太费力了,因为每次我做某事时都会出现应用程序加载问题,而且会很烦人。
解决方案
如果您不掷剑,Raycasts 不适合您。您正在使用正确的方式(碰撞),但您错过了一点:
- 当发生碰撞时,这不会发生一次。很多碰撞是连续发生的。
为避免这种情况,您可以在发生碰撞时短时间关闭其中一个碰撞器。(也就是说:如果敌人有100血,而我们每击减20血,那么连续发生5次以上的碰撞。因此,我们是一举杀死敌人。)
或者您可以使用布尔值(例如swordSwingCollisionActive
)。如果在挥动剑后发生碰撞,则将此布尔值设置为true
。挥剑结束后,你又走false
了。就写if (swordSwingCollisionActive) return;
在开头OnCollisionEnter
。
推荐阅读
- c# - 为什么 (int)==(float) 总是编译为 (float)==(float)
- r - 使用 grepl 对 [:alpha:]:[:punct:] 进行数据清理
- javascript - 我在表单上捕获提交按钮的代码有效,但我做得正确吗?
- php - 如何在blade.php中使用vue获取字段的旧值
- build.gradle - Jhipster gradle build 6.0.0 jdk-11 如何修复失败的构建?
- docker - 尝试构建 dockerfile 时出现无效参数错误
- python-3.x - 如何显示最佳拟合方程并计算 scipy.stats 生成的直方图的 r^2?
- linux - Linux 软件看门狗配置
- c# - CNTK 多输出训练器
- sql-server - 子查询在使用 datediff 的删除语句中返回超过 1 个值