Cocos2d返回精灵身上的触摸位置

时间:2014-06-04 04:08:13

标签: ios cocos2d-iphone

如何在精灵体上获取触摸位置,以便我知道适用于身体的力量。

因此,例如,如果精灵和身体呈矩形,并且玩家接触到矩形的上半部分,我想要向下施力或者如果玩家接触到中间的矩形那个形状然后我不想施加任何力量。

我可以弄清楚如何检查玩家手指的触摸位置是否在物体上但计算玩家触摸物体本身的位置,我不知道如何去做吧。

1 个答案:

答案 0 :(得分:1)

如果您展示代码会更好,但通常您可以使用locationInNode:convertToNodeSpace:方法在精灵中获取触摸位置,具体取决于您已有的内容。

这样的事情:

-(void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{ 
  //Check if you touched the sprite in case 
  //you’re handling touches in your scene
  //If you subclassed CCSprite and handling touches there
  //you don’t have to do anything here.

  CCSprite *yourSprite = ...;
  CGPoint touchLocation = [touch locationInNode:yourSprite];

  float halfHeight = yourSprite.boundingBox.size.height * 0.5f;
  if (touchLocation.y >= halfHeight)
  {
    //Upper part
  }
  else
  {
    //lower part
  }
}

注意,您可以处理场景中的触摸,然后首先需要检查是否触摸了您的精灵,或者您可以继承CCSprite并实现touchBegan:方法以获得通知玩家触摸你的精灵(然后你不需要检查任何内容,而yourSprite变成self)。