【发布时间】:2011-10-21 08:19:36
【问题描述】:
我目前正在尝试根据与直接面向目标的度数(或弧度,我更喜欢度数)不同来旋转精灵,问题是当目标到达特定位置时精灵决定旋转一个完整的 360 到其他方式,而不是做额外的 10 个。这张图片可能更好地解释了这个问题:
蓝色方块 = 目标
红色方块 = 物体
绿线 = 它想要的旋转
黑线 = 当前旋转
棕色箭头 = 它如何旋转来实现这一点
红色箭头 = 我希望它如何旋转。
请注意,案例 1 始终有效,具体取决于它的旋转方式,但案例 2 始终执行该旋转,无论它是在当前旋转的“右侧”还是“左侧”。
这是我用来旋转对象的代码。
Vector2 distance = new Vector2(target.worldPos.X - this.worldPos.X, target.worldPos.Y - this.worldPos.Y);
float wantRot = (float)Math.Atan2(distance.Y, distance.X);
if (this.rotation < wantRot)
this.rotation += MathHelper.ToRadians(45) * Time.deltaTime;
if (this.rotation > wantRot)
this.rotation -= MathHelper.ToRadians(45) * Time.deltaTime;
我想要实现的是让它根据红色箭头而不是棕色箭头旋转(在案例 2 中)。
注意:我不是编程方面的专家,我只是在过去的一年中不时进行过编程(主要是简单的 2D 射击/射击类游戏),因此将不胜感激.我也是一名学习编程的学生。
PS:标题的建议也将不胜感激,因为我完全不知道该放什么。
【问题讨论】:
-
非常好的问题,强烈 +1 先生
-
phoenixmedialab.com 见顶部凤凰标志