AndEngine - 如何知道将对象放置在场景上的位置

时间:2013-10-31 17:09:47

标签: android sprite andengine andengine-gles-2

我目前正在使用AndEngine GLES2 Center设置一个场景,我有以下疑问: 我放置了一个背景,根据我的理解,使用这个新版本的AndEngine,精灵的位置应该相对于左下角。

但是如果我想将一个对象放在位置(x,y)并且我在FireWorks这样的编辑器中看到这样的位置并且在Sprite参数中使用它,它将不会出现在编辑器中出现的相同位置。如何知道放置物体的正确位置?

谢谢!

1 个答案:

答案 0 :(得分:6)

每个Sprite(实际上是Entity)都有一个锚点。在场景位置(x,y)上放置一个Sprite时,意味着你将Sprite的锚点粘贴在坐标(x,y)上。

在AndEngine GLES2和GLES2-AC分支中,锚点和坐标系统都不同。

             |  GLES2                    |  GLES2-AnchorCenter
-------------+---------------------------+-------------------------------------
anchor point | At corner of entity.      | As branch name, at center of entity.
             | (left-top corner)         | (vertically and horizontally)
             |                           |
             |   anchor point            |
             |   |                       |
             |   V                       |      +-------------+
             |   X-------------+         |      |             |
             |   |             |         |      |      X <-------- anchor point
             |   | I am Entity |         |      | I am Entity |
             |   |             |         |      +-------------+
             |   +-------------+         |
             |                           |
-------------+---------------------------+-------------------------------------
coordinates  | Origin at left-top.       | Origin at left-bottom
             | move right -> x increase, | move right -> x increase,
             | move up -> y decrease.    | move up -> y increase.

注意:当实体旋转,倾斜和缩放时,也会使用锚点。因此,在GLES2分支中,当实体在旋转时,人们通常认为实体也在移动,但事实并非如此,锚点始终固定在坐标(x,y)处。