【问题标题】:Proper rotation with changing x/y coordinates通过改变 x/y 坐标进行适当的旋转
【发布时间】:2011-10-28 14:37:41
【问题描述】:

我正在尝试制作一个小型弓箭手游戏,而我遇到的问题尤其与 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 像素的顶部。如果您需要更多信息,请发表评论。

【问题讨论】:

  • 我是否正确理解您试图推断由两点定义的线?
  • 没有。 Sprites 的位置基于图像的中心。因此,如果两者都是 20px 长/1px 宽,并且我设置 arrow.position = arm.position,那么它们正好在彼此之上。我想要一种根据手臂精灵的角度找到 x/y 点的方法,例如在 45 度角处,它可能是 0.75 像素 down.x 和 0.75 像素 down.y,我会设置箭头的定位到该点并减少该点以使其看起来像正在绘制。

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


【解决方案1】:

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

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

要让箭在拉弓时远离手臂,您只需设置箭头相对于手臂的位置。

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

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

海报的解决方案

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

【讨论】:

  • 你没有明白我在说什么 :) 经过反复试验,我自己弄清楚了。我必须根据角度得到手臂的 x 和 y 坐标,然后我得到一个数字的 sin/cos,该数字基于与手臂相同的角度并从中减去。
  • 是的,我不确定我是否正确阅读了这个问题。我将删除我的答案,但您应该发布您的答案并将其标记为正确,以供以后的用户使用。
  • 发布您在此处留下的评论作为答案。 =]
  • 哈哈哈太费劲了。我相信你的建议会解决我的问题。
猜你喜欢
  • 2010-12-28
  • 1970-01-01
  • 2018-05-15
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
相关资源
最近更新 更多