翻遍论坛后没找到这个。我想实现这样的东西......主角总是朝着它所面对的方向移动。当玩家触摸屏幕时,角色会转向该触摸位置,这会导致身体朝不同的方向移动。
我可以让角色面对触摸位置,如下所示:
CGPoint diff = ccpSub(location, self.position);
CGFloat targetAngle = atan2f(diff.y, diff.x);
self.body->a = targetAngle;
我想要一些类似的东西。获取角色当前面对的角度。将该角度转换为单位向量。将该单位向量乘以 max_velocity,并将其应用于角色。这应该(理论上)将角色以恒定速度朝其面对的方向移动?
这似乎给了我想要的东西:
cpVect rotatedVel = cpvmult(ccpForAngle(self.body->a), MAX_VELOCITY);
self.body->v = cpvlerpconst(self.body->v, rotatedVel, ACCELERATION * dt);
现在我需要的只是一种随时间缓慢旋转角色方向的方法。我该怎么做?