0
我无法为我的代码中的对象设置向量。我试着对代码进行建模,类似于这个问题的答案:Game enemy move towards player,只是我使用的是GLKVector2's。我认为我的实现看起来是正确的,但它实际上只是我第一次使用带有GLKit的向量,并且通常我以前没有使用过它们。问题与GLKVector2的
我当前的代码看起来像:
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;
然后移动工作向游戏对象,但仅更新,即使它应该更新每秒的一次。
我更新了我的问题。有些东西仍然无法正常工作。我认为我的更新代码很好,但我不太确定。 – Josh
你能发布你的更新代码吗?在每个时间步骤绘制屏幕之前,您应该通过'moveVelocity.x * timeSinceLastUpdate'和'moveVelocity.y * timeSinceLastUpdate'增加'position.x'。不知道为什么GLKVector2Normalize不起作用。 –