在iphone中的cocos2d中是否有CCMoveBy Action的替代方案

时间:2011-08-02 07:03:42

标签: iphone cocos2d-iphone

iphone中cocos2d中的CCMoveBy Action还有其他选择吗?

如果有人知道这个..请回复。

1 个答案:

答案 0 :(得分:2)

使用动作移动精灵的另一种方法是使用简单的物理学。您可以扩展CCSprite类以包含更新方法以及ivars / properties以跟踪x和y速度。

在更新方法中,在每个方向上按速度* dT移动精灵。 在游戏场景的更新方法中调用sprite更新方法。

MovingSprite.h

#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface MovingSprite : CCSprite {
    float _vx;
    float _vy;
}

-(void) update:(ccTime)dt;

@property (nonatomic, assign) float vx;
@property (nonatomic, assign) float vy;

@end

MovingSprite.m

#import "MovingSprite.h"

@implementation MovingSprite

@synthesize vx = _vx;
@synthesize vy = _vy;

-(void)update:(ccTime)dT
{
    self.vy -= (kGravity * dT); //optionally apply gravity
    self.position = ccp(self.position.x + (self.vx*dT), self.position.y + (self.vy*dT));
}

[self scheduleUpdate];添加到游戏图层的init方法中。然后在游戏层中添加一个更新方法,在其中为所有移动的精灵调用update。

现在您只需要添加碰撞检测以检查汽车是否与轨道两侧发生碰撞。