【Unity】Transform—游戏物体的角度和旋转

一、角度相关

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson7 : MonoBehaviour
{
    void Start()
    {
        //相对世界坐标的角度
        //想要得到Inspector面板上显示的角度,并非使用transform.rotation,而是transform.eulerAngles
        print(this.transform.eulerAngles);
        //相对父对象的角度
        print(this.transform.localEulerAngles);

        //注意:1.同位置一样,角度也无法单独对x、y、z其中一个值进行修改,只能使用Vector3进行整体修改
        //     2.通过欧拉角得到的角度 不会出现负数,虽然Inspector显示出了负数,但是 通过此代码得到的欧拉角 始终 都是0~360
    }
}

二、旋转相关

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson7 : MonoBehaviour
{
    void Update()
    {
        //自己手动计算:省略,和位置的计算差不多,不停改变角度即可

        //用API计算
        //1.自转
        //参数1 旋转的角度 和 旋转的速度
        //参数2 相对哪个坐标系旋转(默认不填 就是相对于自己的坐标系进行旋转)
        this.transform.Rotate(new Vector3(0, 5, 0) * Time.deltaTime, Space.World);

        //补充:另外一种写法
        //相对于某个轴转
        //参数1 相对于哪个轴旋转
        //参数2 旋转的角度 和 旋转的速度
        //参数3 相对哪个坐标系旋转(默认不填 就是相对于自己的坐标系进行旋转)
        this.transform.Rotate(Vector3.right, 10 * Time.deltaTime, Space.World);

        //2.相对于某一个点旋转
        //参数1 先对于哪个点旋转
        //参数2 相对于参数1的那个点 的 哪一个轴旋转
        //参数3 旋转的角度 和 旋转的速度
        //这样写 就是相对于(0, 0, 0)点 的 y轴 进行旋转
        this.transform.RotateAround(Vector3.zero, Vector3.up, 50 * Time.deltaTime);
    }
}

image

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用DOTween插件可以很容易地使用unitytransform.DOLocalRotate来在旋转时间内修改物体角度。您可以按照以下步骤进行操作: 1. 在Unity中导入DOTween插件。 2. 在需要使用DOTween插件的脚本中导入DOTween和DG.Tweening命名空间。 3. 使用unitytransform.DOLocalRotate方法来指定旋转时间和目标旋转角度,例如: ``` transform.DOLocalRotate(new Vector3(0, 90, 0), 1f); ``` 其中,new Vector3(0, 90, 0)是目标旋转角度,1f是旋转时间(单位为秒)。 这将在1秒的时间内将物体从当前角度旋转到(0,90,0)的角度。您可以根据需要调整旋转时间和目标旋转角度。 ### 回答2: 在Unity中,使用transform.DOLocalRotate来修改物体角度可以在旋转时间内平滑地改变物体旋转状态。transform.DOLocalRotate方法接受一个Quaternion参数,用于设置物体的目标旋转角度。 要在旋转时间内修改物体角度,可以先获取物体当前的旋转角度,然后根据需求计算出目标旋转角度,并将其转换为Quaternion类型。接下来,使用transform.DOLocalRotate方法来设置物体的目标旋转角度旋转的时间。 例如,假设有一个名为"Cube"的物体,我们想要在5秒内将其从当前旋转角度旋转到目标旋转角度(例如,将其绕Y轴顺时针旋转90度),可以使用以下代码实现: ```csharp using UnityEngine; using DG.Tweening; public class RotateCube : MonoBehaviour { public float rotateTime = 5f; // 旋转时间 void Start() { // 获取物体当前的旋转角度 Quaternion fromRotation = transform.localRotation; // 计算目标旋转角度(例如:绕Y轴顺时针旋转90度) Quaternion toRotation = Quaternion.Euler(0, 90, 0) * fromRotation; // 使用transform.DOLocalRotate方法设置物体的目标旋转角度旋转时间 transform.DOLocalRotate(toRotation.eulerAngles, rotateTime); } } ``` 上述代码会在游戏开始时将物体从当前旋转角度平滑地旋转到目标旋转角度。可以根据需求修改rotateTime和toRotation来实现不同的旋转效果。 总之,使用transform.DOLocalRotate方法可以在旋转时间内平滑地修改物体角度。 ### 回答3: 在Unity中,我们可以使用transform.DOLocalRotate来在旋转时间内修改物体角度transform.DOLocalRotate是DoTween插件中的一个函数,用于在指定的时间内实现物体旋转操作。以下是几个步骤来使用transform.DOLocalRotate来实现这个功能: 1. 首先,需要确保你已经安装并导入了DoTween插件。你可以在Unity Asset Store中搜索并下载DoTween插件。 2. 在你的脚本中引入DoTween库。使用以下代码行之一: using DG.Tweening; 或者 using DG.Tweening.Core; using DG.Tweening.Plugins.Options; 3. 在你的代码中,使用DOTween的静态函数DOLocalRotate来执行旋转操作。以下是一个示例代码: transform.DOLocalRotate(new Vector3(0, 90, 0), 1f); 这段代码将使物体绕y轴旋转90度,旋转时间为1秒。 4. 在开始旋转之前,你可能需要调用transform.DOPause()函数来暂停旋转。这可以确保在之前的动画完成之前没有其他额外的旋转操作。 5. 如果你想要添加额外的设置,比如缓动曲线,你可以在DOLocalRotate函数的末尾使用SetEase函数来设置缓动曲线。以下是一个具有缓动曲线的示例代码: transform.DOLocalRotate(new Vector3(0, 90, 0), 1f).SetEase(Ease.OutQuad); 这段代码将使用OutQuad缓动曲线在1秒内将物体绕y轴旋转90度。 总的来说,使用transform.DOLocalRotate函数,你可以在旋转时间内修改物体角度。通过提供旋转目标角度旋转时间,你可以实现物体的平滑旋转

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值