Iphone 使用cocos2d投球,但不使用任何物理引擎
我想以快速击球的速度投球,但不想使用任何物理引擎。因此,请任何人都能建议我如何做到这一点Iphone 使用cocos2d投球,但不使用任何物理引擎,iphone,ios4,cocos2d-iphone,Iphone,Ios4,Cocos2d Iphone,我想以快速击球的速度投球,但不想使用任何物理引擎。因此,请任何人都能建议我如何做到这一点 谢谢我正在使用抛射运动公式以及cocos动作来实现这一点。这里有一个可能的方法: 首先 实现一个CCActionInterval子类,该子类接收射弹公式参数并更新射弹位置。在这种情况下,projectLeaction。以下是您需要克服的关键方法: -(void) startWithTarget:(id)target { self.initialPosition = [target positio
谢谢我正在使用抛射运动公式以及cocos动作来实现这一点。这里有一个可能的方法:
- 首先
CCActionInterval
子类,该子类接收射弹公式参数并更新射弹位置。在这种情况下,projectLeaction
。以下是您需要克服的关键方法:
-(void) startWithTarget:(id)target
{
self.initialPosition = [target position];
self.elapsedTime = 0;
[super startWithTarget:target];
}
-(void) update: (ccTime) tt
{
self.elapsedTime += tt;
float t = self.elapsedTime;
float theta = CC_DEGREES_TO_RADIANS(self.angle);
float v0 = self.velocity;
float g = self.gravitationalAcceleration;
double x = v0 * cos(theta) * t;
double y = v0 * sin(theta) * t - 0.5 * g * t * t ;
[self.target setPosition: ccp(self.initialPosition.x + (float)x, self.initialPosition.y + (float)y)];
}
- 第二
theVelocity
参数。我把那部分留给你
- 第三
ProjectileLaunch* action = [ProjectileLaunch actionWithDuration:10
angle:45
initialVelocity:theVelocity
g:9.8];
[sprite runAction:action];
我希望这对你有帮助
关于。一种简单而有效的方法,无需明确使用任何物理引擎,就是在更新循环中手动步进球精灵的速度和位置,欧拉风格 在典型情况下(重力向下),y方向的速度为非恒定速度,x方向的速度为恒定速度,因此代码如下:
-(void) update: (ccTime) dt
{
// Step only the y-velocity
velocity_y += GRAVITY * dt;
// Step the position values and update the ball sprite position accordingly
ball.position.x += velocity_x * dt;
ball.position.y += velocity_y * dt;
}
然后,当检测到刷卡事件时