【问题标题】:How to rotate a sprite without rotating the object or make movement rotation independant如何在不旋转对象的情况下旋转精灵或使运动旋转独立
【发布时间】:2015-01-17 15:00:30
【问题描述】:

我在 unity2d 中做了一个事情,其中​​一个对象根据鼠标的位置相对于对象的位置移动,为此,有一个从对象到鼠标的向量,所有移动要么平行于这个或垂直于它。

在添加精灵旋转之前效果很好(添加如下所示)

void RoterModMus()
{
    fRotationIGrader = Vector2.Angle (Vector2.up,  vVectorToMouse.normalized);
    if(vVectorToMouse.normalized.x<0)
    {
        transform.rotation =Quaternion.Euler(0, 0, fRotationIGrader);
    }
    else{transform.rotation =Quaternion.Euler(0, 0, -fRotationIGrader); }
}

当我在更新中停止运行此功能时,运动再次起作用。

有没有办法在不旋转对象的情况下旋转精灵,或者不影响运动??

我无法找到任何关于这些问题的任何信息,我无法弄清楚(抱歉丹麦代码)

代码检查向上和鼠标之间的角度(向上为零)并将对象的旋转设置为那个或减去那个 呜呜呜

【问题讨论】:

    标签: c# unity3d rotation unity3d-2dtools


    【解决方案1】:

    一种解决方案是将带有 sprite 组件的空游戏对象作为子对象添加到您的对象,然后使用 sprite 旋转子 AKA 空游戏对象。

    【讨论】:

    • 非常感谢,这行得通!编辑:但我现在不需要从精灵占位符对象中进行所有碰撞检测吗?还有什么原因导致原版不起作用?
    • 您可以在与精灵相同的游戏对象上添加刚体(用于碰撞检测)。为什么你不想旋转对象本身?不知道为什么它不起作用,但是查看脚本我看不到任何暗示旋转单个组件/对象的内容。似乎您正在尝试旋转您也尝试移动的整个对象。旋转对象并沿直线移动它可能会影响移动。
    • 当我尝试旋转对象本身时,由于某种原因运动不起作用,我认为它旋转了确定鼠标位置的矢量方向(我不知道还有什么可能)即使我在确定该向量之前旋转
    • 如何通过从向量中减去角度来对抗 objectRotation? IE。如果您将对象旋转 45 度,则减去 45 度,这样您最终再次为零。这样向量总是指向同一个点。
    • 我会尝试的,但是当我从不改变向量开始时​​为什么我必须这样做(我只是怀疑统一会这样做)
    猜你喜欢
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多