远离性格

时间:2014-10-28 01:30:35

标签: unity3d unityscript

我试图让一些敌人逃离我的玩家。我发现代码移向游戏并使其相反。问题是他们逃跑时加速非常快。如果我让代码回到奔向角色,他们会以正常速度移动。这是为什么?

逃跑

Vector2 velocity = new Vector2((transform.position.x - player.position.x) * speed, (transform.position.y - player.position.y) * speed);
rigidbody2D.velocity = velocity;

跑向

Vector2 velocity = new Vector2((transform.position.x - player.position.x) * speed, (transform.position.y - player.position.y) * speed);
rigidbody2D.velocity = -velocity;

1 个答案:

答案 0 :(得分:1)

我想,当他们接近你时,角色实际上会变慢......那就是你写的代码会做什么。

基本上,你有(End - Start) * Speed ...这意味着End - Start的长度乘以速度。因此,如果角色距离5米,速度= 5米*速度等等。

您需要的是((End - Start) / (End - Start).Length()) * Speed

除以End - Start的长度,就可以移除等式中的距离,并获得纯粹的方向乘以所需的速度。