更改CCSprite位置会导致屏幕消失

时间:2015-09-29 11:20:07

标签: c# cocos2d-x cocossharp

CCSprite在屏幕上定位的奇怪行为。 场景很简单:在触摸时更改精灵位置(在屏幕上拖动项目)。

private void HandleInput(List<CCTouch> arg1, CCEvent arg2)
{
    base.Position = arg1.Last().LocationOnScreen;
}

base.Position设置为LocationOnScreen后,它就会消失。

注意: cocossharp是着名框架的c#端口,其结构和实现与cocos2d-x非常相似,因此添加了此标记。
任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

在cocos2d-x中,节点相对于其父节点内容区域定位。

通常,要使用触摸派生(世界空间)坐标在cocos2d-x中定位精灵,您将在父级上使用convertToNodeSpace方法。

在c ++中因为cocos2d-x:

void setSpritePositionWhenTouched(Node* sprite, const Vec2& touchPos)
{
  auto parent = sprite->getParent();
  auto pos = parent->convertToNodeSpace(touchPos);
  sprite->setPosition(pos);
}