我有一个精灵,这个位置由加速度计操纵,如下所示:
-(float)movement {
self.accelerometerData = self.motionManager.accelerometerData;
float xAccelerationPosition = 0;
if ((self.accelerometerData.acceleration.x)<-0.1) {
xAccelerationPosition = 30 * self.accelerometerData.acceleration.x;
}
if ((self.accelerometerData.acceleration.x)>0.1) {
xAccelerationPosition = 30 * self.accelerometerData.acceleration.x;
}
return xAccelerationPosition;
}
-(void)update:(NSTimeInterval)currentTime {
if ((self.player.position.x + [self.playerData movement]) < self.frame.size.width &&
(self.player.position.x + [self.playerData movement]) > 0){
[self.player setPosition:CGPointMake((self.player.position.x + [self.playerData movement]), self.player.position.y)];
}
}
方法属于不同的类。
我在播放器和场景中也有一个物理体,但是每当xAccelerationPosition太高时,精灵就会在屏幕两侧开始抖动。为什么呢?
答案 0 :(得分:0)
使用加速度计数据输入玩家身体的速度(或施加冲动),而不是直接更新玩家的位置,因为这将绕过物理碰撞处理,让它解决与下一帧中其他物体的任何穿透。