【发布时间】:2011-08-23 14:30:52
【问题描述】:
我想为一个精灵模拟“重力”。
我定义了一个 CGPoint 来保存重力值。而且我有tick方法。
//in my init I defined this: gravity = ccp(0.0f, -1.0f);
-(void)tick:(ccTime) dt {
if (enableGravity_) {
//simulate gravity
velocity_.x += gravity_.x;
velocity_.y += gravity_.y;
self.position = CGPointMake(position_.x + velocity_.x, position_.y + velocity_.y);
}
if (isAcceleratingEnabled_) { //I move my sprite here
float angle = self.rotation;
float vx = cos(angle * M_PI / 180) * acceleratingSpeed_;
float vy = sin(angle * M_PI / 180) * -acceleratingSpeed_;
CGPoint direction = ccp(vx, vy);
[self setPosition:ccpAdd(self.position, direction)];
}
}
编辑: 现在的问题是..如果“isAccelerationEnabled”为YES,我将移动我的精灵。当我这样移动精灵时,它并不平滑。 如果我向上移动我的精灵而不是禁用“isAcceleration”它不会再向上移动但重力会立即将我的精灵拉下来。我不知道如何在这段代码中使用速度:
[self setPosition:ccpAdd(self.position, direction)];
现在这不是一个真正平滑的模拟重力解决方案。
这会将重力立即应用到精灵。
但我想要精灵平稳下落的效果。就像真实的物体掉到地上一样。
顺便说一句:我还对精灵施加了一些向上的力。
【问题讨论】:
标签: math cocos2d-iphone smooth gravity