通过改变x / y坐标进行适当的旋转

时间:2011-10-28 14:37:41

标签: objective-c xcode math cocos2d-iphone geometry

我正在尝试制作一个小弓箭手游戏,而我遇到的问题与2像素有关,我称之为_arm和_arrow。当一个真正的弓箭手拉回一个箭头时,他并没有立即向后拉箭头,只要他的力量允许他,箭头需要一点时间才能被拉回来。 _arm的角度等于用户在屏幕上触摸的点的向量。旋转是完美的,所以_arm是好的。 _arrow需要与_arrow位于同一行,它们各为1像素宽,因此看起来_arrow正好位于_arm的顶部。

我尝试根据随时间变化的变量从x / y坐标递减,并将_arrow的位置设置为等于_arm的位置,并尝试使其看起来像_arrow被拉回。然而,如果你旋转,x / y会因为它在x和y轴上不成比例而变得混乱,所以基本上_arrow将略微高于手臂或略低于它,取决于矢量的角度,基于触摸

我怎样才能使用_arm的x / y位置和触摸矢量使箭头看起来好像被拉回一小部分,然后将箭头保持在_arm精灵的顶部以便它的位置可能与手臂类似,但稍微偏离,但仍然在_arm像素的顶部。如果您需要更多信息,请发表评论。

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解,但无论如何我都会回答:

使箭头移动并旋转到与考虑将箭头添加为手臂的子项相同的位置。如果你愿意,你可以通过使z小于1来渲染它:[arm addChild:arrow z:-1]

然后在绘制弓箭时使箭头远离手臂,然后只需设置箭头相对于手臂的位置。

我用这个解决方案看到的问题是,在箭头离开弓之后,这些精灵的分组可能有点不寻常。在这里你可能不希望箭头成为手臂的孩子,因为坐标系不再相关。

即使他们确定我“建议会解决问题”这里是

海报的解决方案

  

我必须根据角度获得手臂的x和y坐标,然后我得到一个数字的sin / cos,该数字基于与手臂相同的角度并从中减去。