相关疑难解决方法(0)

如何逐渐旋转物体以面对另一个物体转动最短距离

我正在尝试旋转一个精灵,取决于多少度(或rad,我更喜欢度数),它不同于直接面向目标,问题是当目标到达某个位置时精灵决定旋转整个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;
Run Code Online (Sandbox Code Playgroud)

我想要实现的是根据红色箭头而不是棕色箭头旋转(在案例2中).

注意:我不是编程方面的专家,我在过去的一年中不时地完成它(主要是简单的2D射击游戏/射击游戏),因此深入解释将不胜感激.我也是学生学习编程.

PS:标题的建议也会受到赞赏,因为我完全不知道该放什么.

c# xna rotation

13
推荐指数
1
解决办法
3066
查看次数

标签 统计

c# ×1

rotation ×1

xna ×1