0

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

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

设置base.PositionLocationOnScreen它就消失了。


注意: cocossharp是著名框架的 ac# 端口,其结构和实现与cocos2d-x添加此标签非常相似。
任何帮助表示赞赏。

4

1 回答 1

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);
}
于 2015-09-30T05:44:08.987 回答