
cocos2d新手简单问题,请看下代码
self.isAccelerometerEnabled=YES;CGSizewinSize=[CCDirectorsharedDirector].winSize;_spr...
self.isAccelerometerEnabled = YES;
CGSize winSize = [CCDirector sharedDirector].winSize; _spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"all.png"];
[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@"all.plist"];
[self addChild:_spriteSheet];
ball1_ = [CCSprite spriteWithSpriteFrameName:@"Bombos%20Medallion.png"];
ball1_.position = ccp(300, 200);
//精灵的旋转动作
id action13 = [CCRotateBy actionWithDuration:1 angle:-360];
id spriteRotate = [CCSequence actions:action13, nil];
id action25 = [CCRepeatForever actionWithAction:spriteRotate];
[ball1_ runAction:action25];
[_spriteSheet addChild:ball1_];
b2Vec2 gravity = b2Vec2(0.0f, 0.0f);
_world = new b2World(gravity);
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0,0);//世界的锚点
b2Body *groundBody = _world->CreateBody(&groundBodyDef);
b2EdgeShape groundBox;
b2FixtureDef boxShapeDef;
boxShapeDef.shape =&groundBox;
groundBox.Set(b2Vec2(0,0), b2Vec2(winSize.width/PTM_RATIO, 0));
groundBody->CreateFixture(&groundBox, 0);
groundBox.Set(b2Vec2(0,0), b2Vec2(0, winSize.height/PTM_RATIO));
groundBody->CreateFixture(&groundBox, 0);
groundBox.Set(b2Vec2(0, winSize.height/PTM_RATIO),
b2Vec2(winSize.width/PTM_RATIO, winSize.height/PTM_RATIO));
groundBody->CreateFixture(&groundBox, 0);
groundBox.Set(b2Vec2(winSize.width/PTM_RATIO,
winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, 0));
groundBody->CreateFixture(&groundBox, 0);
//创建小球刚体
b2BodyDef spriteBodyDef;
spriteBodyDef.type = b2_dynamicBody;
spriteBodyDef.position.Set(ball1_.position.x/PTM_RATIO,
ball1_.position.y/PTM_RATIO);
spriteBodyDef.userData = ball1_;
// b2Body *spriteBody = _world->CreateBody(&spriteBodyDef);//把小球加入世界
b2CircleShape spriteShape;
spriteShape.m_radius = ball1_.contentSize.width/PTM_RATIO/2;
b2FixtureDef spriteShapeDef;
spriteShapeDef.shape =&spriteShape;
spriteShapeDef.density = 5.0;//密度
spriteShapeDef.isSensor = false;//感知器官,true无法碰撞
spriteShapeDef.restitution = 1.0;
// spriteBody->CreateFixture(&spriteShapeDef);//赋予刚体属性
//小球刚体旋转
CCRotateBy *actionRotate = [CCRotateBy actionWithDuration:1.0];
CCAction *actionRepeatForever = [CCRepeatForever actionWithAction:actionRotate];
[ball1_ runAction:actionRepeatForever];
[self schedule:@selector(tick:)];
这些是init方法里的代码,在代码中注销了两句,为什么不注销小球就不旋转?怎么样让小球看上去在刚体世界里旋转? 展开
CGSize winSize = [CCDirector sharedDirector].winSize; _spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"all.png"];
[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@"all.plist"];
[self addChild:_spriteSheet];
ball1_ = [CCSprite spriteWithSpriteFrameName:@"Bombos%20Medallion.png"];
ball1_.position = ccp(300, 200);
//精灵的旋转动作
id action13 = [CCRotateBy actionWithDuration:1 angle:-360];
id spriteRotate = [CCSequence actions:action13, nil];
id action25 = [CCRepeatForever actionWithAction:spriteRotate];
[ball1_ runAction:action25];
[_spriteSheet addChild:ball1_];
b2Vec2 gravity = b2Vec2(0.0f, 0.0f);
_world = new b2World(gravity);
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0,0);//世界的锚点
b2Body *groundBody = _world->CreateBody(&groundBodyDef);
b2EdgeShape groundBox;
b2FixtureDef boxShapeDef;
boxShapeDef.shape =&groundBox;
groundBox.Set(b2Vec2(0,0), b2Vec2(winSize.width/PTM_RATIO, 0));
groundBody->CreateFixture(&groundBox, 0);
groundBox.Set(b2Vec2(0,0), b2Vec2(0, winSize.height/PTM_RATIO));
groundBody->CreateFixture(&groundBox, 0);
groundBox.Set(b2Vec2(0, winSize.height/PTM_RATIO),
b2Vec2(winSize.width/PTM_RATIO, winSize.height/PTM_RATIO));
groundBody->CreateFixture(&groundBox, 0);
groundBox.Set(b2Vec2(winSize.width/PTM_RATIO,
winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, 0));
groundBody->CreateFixture(&groundBox, 0);
//创建小球刚体
b2BodyDef spriteBodyDef;
spriteBodyDef.type = b2_dynamicBody;
spriteBodyDef.position.Set(ball1_.position.x/PTM_RATIO,
ball1_.position.y/PTM_RATIO);
spriteBodyDef.userData = ball1_;
// b2Body *spriteBody = _world->CreateBody(&spriteBodyDef);//把小球加入世界
b2CircleShape spriteShape;
spriteShape.m_radius = ball1_.contentSize.width/PTM_RATIO/2;
b2FixtureDef spriteShapeDef;
spriteShapeDef.shape =&spriteShape;
spriteShapeDef.density = 5.0;//密度
spriteShapeDef.isSensor = false;//感知器官,true无法碰撞
spriteShapeDef.restitution = 1.0;
// spriteBody->CreateFixture(&spriteShapeDef);//赋予刚体属性
//小球刚体旋转
CCRotateBy *actionRotate = [CCRotateBy actionWithDuration:1.0];
CCAction *actionRepeatForever = [CCRepeatForever actionWithAction:actionRotate];
[ball1_ runAction:actionRepeatForever];
[self schedule:@selector(tick:)];
这些是init方法里的代码,在代码中注销了两句,为什么不注销小球就不旋转?怎么样让小球看上去在刚体世界里旋转? 展开
1个回答
展开全部
你定义好了刚体,然后给他一个力就可以了,不需要给刚体定义动画,这样就一直有外力介入了。你不要定义动画,删除注释,给这个刚体一个力试试看。
追问
可是我想做出来看上去不断旋转的效果,不管刚体受什么力或者不受力,都一直保持匀速旋转,这样如何实现呢?
追答
那就好box2d没关系啊!box2d是创建了这个刚体,让这个刚体在b2World世界里运动,你不需要用box2d的内容,你直接让他runAction就可以了啊!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询