想象一下50px长的手臂。 它被放置在100,100。 旋转中心位于100,100。 手臂始终旋转。 手臂上有一个钩子来回移动手臂的全部距离。想知道数学游戏
我的变量:
X = 100;
Y = 100;
RotationAngel = 120; // Loops up to 360.
HookDistanceFromCenter = 25; // Goes 0 -> 50 -> 0 by a loop.
如何获得钩的位置(X,Y)?
想象一下50px长的手臂。 它被放置在100,100。 旋转中心位于100,100。 手臂始终旋转。 手臂上有一个钩子来回移动手臂的全部距离。想知道数学游戏
我的变量:
X = 100;
Y = 100;
RotationAngel = 120; // Loops up to 360.
HookDistanceFromCenter = 25; // Goes 0 -> 50 -> 0 by a loop.
如何获得钩的位置(X,Y)?
从你的具体数据:
x = 100 - HookDistanceFromCenter * cos(180 - RotationAngle)
y = 100 + HookDistanceFromCenter * sin(180 - RotationAngle)
,但它的变化取决于哪个象限你在这是基本的三角。您应该可以使用以下信息:http://en.wikipedia.org/wiki/Unit_circle,区别在于您的圆的半径为HookDistanceFromCenter
,您必须将旋转中心坐标添加到结果才能得到实际的(x,y)
。
你的意思是“哪个象限”RotationAngle <90 || RotationAngle <180 || RotationAngle <270 || RotationAngle <360? – 2011-12-27 14:21:06
是的,尽管是迂腐的,我的意思是0
这样改变你的代码示例的结果? – 2011-12-27 14:26:09
这篇文章可以帮助:
http://indiedevstories.com/2012/08/14/custom-cocos2d-action-rotating-sprite-around-arbitrary-point/
文章的重点是cocos2d的游戏适用于iOS,但介绍部分是通用。
HTH!
这是一个家庭作业吗? – Kromster 2011-12-27 14:00:43
哈哈。没有! 用钩子制作游戏! (我34岁,但数学不好......) – 2011-12-27 14:02:41