我对编程非常陌生,我提前道歉,因为我的无知可能会给某人造成任何不便。也提前谢谢你。我有一个精灵代表左轮手枪上的子弹皮套,我想要完成的效果是触摸皮套的旋转效果。我已经找到了所有的三角形,并且几乎完成了预期的结果。在ccTouchMoved的第一个实例中,子弹皮套跳跃以使其旋转与触摸一致,几乎就像皮套上的一个点与触摸同步。在那之后,它会像你期望的那样旋转。如何让它相对于我在最后一次触摸时离开的位置旋转?我见过其他有类似问题的人。我也看到了回答问题的答案。我只是无知得到那个答案所说的,因为它看起来像是为了一个比我自己更有经验的程序员。
这是我自己的场景,包含我的所有逻辑
#import "MainScene.h"
@implementation MainScene
+(id) scene
{
CCScene *scene = [CCScene node];
MainScene *layer = [MainScene node];
[scene addChild: layer];
return scene;
}
-(id) init
{
if ((self=[super init])) {
CGSize size = [[CCDirector sharedDirector] winSize];
dial = [CCSprite spriteWithFile:@"dial.png"];
dial.position = ccp(size.width/2, dial.contentSize.height/2);
[self addChild:dial];
self.isTouchEnabled = YES;
[self scheduleUpdate];
}
return self;
}
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"Touch begun");
}
-(void)update:(ccTime) dt{
dial.rotation = cocosAngle;
}
-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"Touch moved");
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView:[touch view]];
CGPoint touchingPoint = [[CCDirector sharedDirector] convertToGL:touchLocation];
CGPoint vector = ccpSub(touchingPoint, dial.position);
CGFloat rotateAngle = -ccpToAngle(vector);
deltaAngle = CC_RADIANS_TO_DEGREES( rotateAngle);
}
...
@end
这是我第一次尝试游戏。我开始对一些界面进行原型设计并且已经达到了减速带!提前再次感谢您!
答案 0 :(得分:0)
我不确定我是否明白你的意思,但这是一个建议
这个问题可能是因为你分配了你的sprite.rotation = someValue;这将强制为你的精灵分配一个特定的角度,这将导致“跳跃”
相反,使用这个,sprite.rotation--;或者sprite.rotation ++;在你的touchMoved逐步移动它。在这种情况下,您可能需要更改计算角度旋转的方式。