【发布时间】:2016-02-15 13:13:27
【问题描述】:
我偶然发现了一个问题。我已经修改了我在论坛中找到的一个影响脚本,它使玩家使用盒子碰撞器作为触发器推开另一个玩家。问题是,影响相当不一致。方向有时没有意义(玩家在被推动时会转向另一个方向)并且力从非常强到非常轻不等,我真的不知道是什么让它这样做。这是我附加到游戏对象的代码:
void FixedUpdate () {
//p2 being player 2 character controller
if (impact.magnitude > 0.2f)
p2.Move (impact * Time.deltaTime);
impact = Vector3.Lerp (impact, Vector3.zero, 5 * Time.deltaTime);
pos = (p2.GetComponent<Transform> ().transform.position - transform.position);
}
//adds impact force
public void AddImpact(Vector3 dir, float force)
{
dir.Normalize ();
if (dir.y < 0)
dir.y = -dir.y;
if (dir.y > 0)
dir.y = 0;
impact += dir.normalized * force / mass;
}
public void OnTriggerEnter(Collider col)
{
AddImpact (pos, 20);
}
每当播放动画时,我也会使用 (.enabled) 及时激活此代码。谁能告诉我这有什么问题?经过两天的代码分析,我似乎无法做到。任何帮助将不胜感激
【问题讨论】:
-
是不是打算让 dir.y 在
AddImpact()中总是以零结尾?我可能弄错了,但是在当前代码中,如果 dir.y 为负数,则切换符号使其为零或正数,然后如果大于零,则最终为零。与dir.y = 0;相同