为啥我的精灵在接触另一个物理物体时会颤抖?

Posted

技术标签:

【中文标题】为啥我的精灵在接触另一个物理物体时会颤抖?【英文标题】:Why is my sprite shaking when touching another physics body?为什么我的精灵在接触另一个物理物体时会颤抖? 【发布时间】:2014-11-11 20:30:03 【问题描述】:

我有一个精灵,它的位置由加速度计操纵,如下所示:

-(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 变得太高,精灵就会在屏幕两侧开始晃动。为什么?

【问题讨论】:

对它有好感吗? .... <.> 他们可能有点太享受他们的时间了 【参考方案1】:

用加速度计数据提供玩家身体的速度(或施加脉冲),而不是直接更新玩家的位置,因为这将绕过物理碰撞处理,让它在下一帧中解决与其他身体的任何穿透。

【讨论】:

以上是关于为啥我的精灵在接触另一个物理物体时会颤抖?的主要内容,如果未能解决你的问题,请参考以下文章

为啥物体在 Unity 中会粘在一起?

Phaser 2 - 如何检测我何时拖动另一个精灵?

使用固定的SKPhysicsJoint将平台检测命中框作为子项附加到玩家精灵更改玩家的碰撞和检测位掩码

Swift SpriteKit - 防止精灵节点角旋转

为啥我的精灵没有用图像初始化?

Unity 精灵物体的创建 Sprite.create