【发布时间】:2022-12-20 10:18:43
【问题描述】:
我有一辆飞行汽车,我想在与物体碰撞时损失一些 HP。
我将汽车的 RigidBody2D 连接到此功能以执行此操作
func _on_Car_body_entered(body):
var force = linear_velocity.length()
var dmg = pow(force / 100, 2) - 0.25
if dmg <= 0: return
Health = Health - dmg
现在,因为我不必非常精确,所以我只是使用当前速度作为力,尽管这是有待改变的。
得到我的“冲击力”后,我将其输入伤害计算公式,如果伤害大于0,则减少HP伤害。
这在大多数情况下工作正常
但
我注意到,如果汽车在水平方向快速行驶并且几乎不接触地面(完全水平),汽车会受到很大的伤害,因为我使用的是速度矢量的长度。
当然,这种情况可以通过仅使用速度矢量的 Y 分量来管理,但它会消除任何水平碰撞,反之亦然,它也让我走上了编程垂直和水平碰撞的道路,当然那些是不是我需要的仅有的两个碰撞方向。
有没有办法从这个等式中删除滑动因子?
【问题讨论】: