移动一个线条图,anchorpoints、动画片或者别的东西...?
-
26-10-2019 - |
题
Ok所以我在做一个游戏用棍子数字与cocos2d在目标c...不同的东西需要的动画的所以,请给我一个建议什么是最好的方式去完成的运动为这些事情:
主要的角色-他是一个射手在左下角谁不移动,除非他会将他的上身,因为你需要的角度改变你在哪里拍摄的角度...
的敌人成群的棒的数字来看你有碰撞测和死亡时拍摄的一个箭头子画面。
我应该如何编1和2的移动?我应该掌握的锚点,并使用那些?(我真的很讨厌笨anchorpoints他们很难获得工作...但我会使用这些如果他们更好地) 或者让吨的动画,或是有另一种更简单的方法结合起来,许多精灵入一个单一的运动?
解决方案
我的一般性建议:永远不会修改默认的锚点(0.5f,0.5f)除非你有一个很好的理解它做什么以及它如何帮助你完成的事情。在所有其他情况下,修改的位置财产。
尤其是如果你做的边界框或半径基于碰撞测,修改的锚点是产生相反的效果。
让我们假设你的矩形sprite图像使用了默认的锚点,这是在中心的纹理:
._______.
| |
| |
| * |
| |
| |
°-------°
本*标记的锚点的纹理。如果你把这个精灵在的位置(250,100)然后sprite的锚点,将在坐标(250,100).
让我们说你移动的锚点,(0.1f,0.1f):
._______.
| |
. | . |
| |
| |
| * |
°-------°
° °
该位置的精灵保持不变,仍为(250,100).锚点的位置也不会改变。什么样的变化是如何的质地是围绕这一点。你可以看到以前的图像的位置之前修改的锚点看浮点。在效果上,你所做的修改的锚点是将(偏移量)的节点的纹理绘制相对于本节点的位置。
在上述情况的质地是现在,中心与它的左下角的节点的位置。你可以不再依赖的位置sprite标志着该中心的图像精灵.如果你修改的锚点任意的每个节点在游戏,你不再有任何相关之间的视觉表现的一个节点及其位置。因此,它是糟糕的设计修改的锚点的游戏对象。
此外,旋转或扩展将始终是中心的锚点。修改的锚点可能导致不可取行为时,旋转或减的节点。
让我们假设一个奇怪的,最坏的情况下,但完全有可能的情况锚点不再是内部的质地:
._______.
| |
| |
| |
* | |
| |
°-------°
这意味着位置,雪碧是偏远远的左边那里的实际图像显示。这可能导致碰撞检查差异,特别是上述情况将完全无效半径基于碰撞的检查。这也是一个令人困惑的情况是在发展。
你的游戏就容易得到发展,如果你可以肯定的是一个精灵的位置总是在市中心的纹理,而不是一些任意点,你甚至不能看见没有帮助的一些试图。
该问题仍然是:
当你想要修改的锚点?
我已经做了所以只有在下列情况下,避免它在所有其他情况:
- 对准非画的纹理的屏幕/窗边界或类似的
- 到右左上/下调整的标签,按钮或图像
- 对准修改的图象(即艺术家更新),而无需修改的节点的位置。
1)为容易解释。假设你有一个完整的画面背景图像。使它复盖了整个屏幕上,你可以做两种情况之一:
- 改变位置:(屏幕width/2,屏幕 height/2)
- 改变的锚点至(0,0)aka CGPointZero
你可以想象,后者是更容易做到的。如果你将永远不会移动的背景,这很好这样做。然而,对于一个滚动的背景,我不会改变的锚点。
2)假设你的菜单系统,呼吁各个按钮和图像是正确的-确切地对准右边的屏幕上。所有的按钮和图像在不同的宽度:即玩游戏、信贷、设置更多很酷的游戏!
而不是搞清楚的个人的位置为每个图像/按钮,很容易只是正确的-对准他们通过修改锚点至(1.0f,0.5f)和随后的位置的图像/按钮在完全屏幕宽度(和可变的画面高度):位置=(屏幕宽,100).
让我们假设以下图像的位置是在(屏幕宽屏幕height/2),与默认的锚点(0.5f,0.5f)。你可以看到的图像是在屏幕外的区域:
__________.
|
.___|___.
| | |
| | |
| * |
| | |
| | |
°---|---°
|
----------°
修改后的锚点的(1.0f,0.5f)图像可以整齐的权利-对准右侧屏幕/窗边境,无论宽度的地质构。位置是相同的:(屏幕宽屏幕height/2).
__________.
|
._______.
| |
| |
| *
| |
| |
°-------°
|
----------°
只是为了便于比较,如果你想要正确对准这个图像,按菜单或标签,而无需修改的锚点,就必须设定其位置,根据这个公式:
(screen width - contentSize.width * anchorPoint.x, screen height / 2)
公式仍然是很简单,它成为一个苦差事,但是如果contentSize的节点的变化,这是常有的情况下为标签,例如分开始有1位数字,但会增加到2、3和4位数,随着时间的推移。在这种情况下正确调整的一个节点通过修改锚点是有道理的,因为它避免了重新计算的位置每次contentSize的节点的变化。
3)有罕见的情况下,一个艺术家,我提供了一个更新的影像游戏的对象。图像大小有改变,所以它不再适合自然地进入游戏的图形。另一方面,对象的位置已经建立了通过游戏测试,不应改变,以避免重新测试游戏。
在这样的情况下调整的锚点,以便在新的形象符合其他图形,而不会影响游戏,是必要的。这是一个安全的,最后一分钟修改。不要开始做这个期间生产阶段或最后你就会在锚点-调整-地狱的整个生命周期的项目。不要去那里!
在摘要:
修改锚点只,如果这使它更容易调整的节点的其他节点或视窗边界,或以微调,最后的技术,而不会影响游戏。
在所有其他情况下, 使用位置专门的移动节点.