您好我终于在cocos2d中制作了一个可操作的操纵杆。我能够将精灵旋转到操纵杆拇指或帽子“指向”的确切角度。但是,我无法在同一方向上移动精灵。是否有一种简单的方法来移动精灵与我设置旋转代码的方式?如果仍然按下拇指但没有移动操纵杆,还有一种方法可以保持移动吗? PS此代码全部在TouchesMoved方法中。 PPS。上限是拇指,垫是操纵杆背景,Sprite2是我要移动的精灵。 (95,95)是pad精灵的中心。
if(capSprite.position.x>=padSprite.position.x){
id a3 = [CCFlipX actionWithFlipX:NO];
[sprite2 runAction:a3];
}
if(capSprite.position.x<=padSprite.position.x){
id a4 = [CCFlipX actionWithFlipX:YES];
[sprite2 runAction:a4];
}
CGPoint pos1 = ccp(95, 95);
CGPoint pos2 = ccp(capSprite.position.x, capSprite.position.y);
int offX = pos2.x-pos1.x;
int offY = pos2.y-pos1.y;
float angleRadians = atanf((float)offY/(float)offX);
float angleDegrees = CC_RADIANS_TO_DEGREES(angleRadians);
float theAngle = -1 * angleDegrees;
sprite2.rotation = theAngle;
答案 0 :(得分:0)
我不熟悉cocos2d,但我快速查看了文档,这个示例可能对您有用:
if keys[key.UP]:
self.target.acceleration = (200 * rotation_x, 200 * rotation_y)
我写了很长的解释来回答你的第二个问题,但我相信这个“self.target.acceleration”也解决了这个问题。您可以在cocos2d API documentation了解更多信息。
答案 1 :(得分:0)
我通常做的是获取角度,使用ccpForAngle(float)将其转换为CGPoint,然后将CGPoint乘以一个值:
float angle = whatever;
CGPoint anglePoint = ccpForAngle(angle);
// You will need to play with the mult value
angle = ccpMult(angle, 2.5);
// This also works with box2D or probably Chipmunk.
sprite.position = angle;