我在为我的代码中的对象设置向量时遇到问题。我尝试对我的代码进行建模,类似于这个问题的答案:游戏敌人向玩家移动,除了我使用的是 GLKVector2's。我认为我的实现似乎是正确的,但这实际上只是我第一次将向量与 GLKit 一起使用,而且总的来说我以前没有过多地使用它们。
我当前的代码看起来像:
GLKVector2 vector = GLKVector2Make(self.player.position.x - self.target.position.x, self.player.position.y - self.target.position.y);
float hypo = sqrt(vector.x*vector.x + vector.y*vector.y);
float speed = 0.25;
vector = GLKVector2Make(vector.x/hypo, vector.y/hypo);
vector = GLKVector2MultiplyScalar(vector, speed);
GLKVector2 sum = GLKVector2Add(vector, self.target.position);
self.target.moveVelocity = sum;
有没有可能我的逻辑在这里不正确?我将不胜感激任何帮助或建议。谢谢!
编辑:只是为了澄清,因为我并没有真正解释会发生什么。基本上“敌人”的形状要么口吃/跳跃,要么只是坚持。他们根本没有向另一个物体移动。
编辑2:
如果我尝试使用 GLKVector2Normalize,那么什么都不会发生。如果我这样做:
GLKVector2 vector = GLKVector2Make(self.player.position.x - self.target.position.x, self.player.position.y - self.target.position.y);
float speed = 0.10;
// float distance = GLKVector2Distance(self.player.position, self.target.position);
// vector = GLKVector2Normalize(vector);
vector = GLKVector2MultiplyScalar(vector, speed);
self.target.moveVelocity = vector;
然后运动朝着玩家对象工作,但只更新一次,即使它应该每秒更新一次。