Unity 物体的朝向与旋转

这篇具有很好参考价值的文章主要介绍了Unity 物体的朝向与旋转。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方式一

立即转向:朝向某个方向

transform.forward = endPosition - startPosition;
方式二

立即转向:看向某个点

transform.LookAt(endPosition);
方式三

立即转向:与方式一类似,朝向某个方向

transform.rotation = Quaternion.LookRotation(endPosition - startPosition);
方式四

DoTween旋转动画,需要提前知道旋转的角度

Vector3 rotationAngle = new Vector3(0, 45, 0);
transform.DORotate(rotationAngle, 1);
方式五

匀速旋转,需要实时计算自己的位置与目标位置之间的四元素

Quaternion qq = Quaternion.LookRotation(endPosition - transform.position);
transform.rotation = Quaternion.RotateTowards(transform.rotation, qq, Time.deltaTime * speed);
方式六

非匀速旋转,一般用于人物旋转(Lerp()用于平分长度,Slerp()用于平分弧度),也需要实时计算自己的位置与目标位置之间的四元素

Quaternion qq = Quaternion.LookRotation(endPosition - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, qq, Time.deltaTime * rotationSpeed);
方式七

朝一个方向旋转【自转】

transform.Rotate(Vector3.up * Time.deltaTime * speed, Space.World);
方式八

绕着某个点旋转【公转】(旋转时,物体的中心点与旋转参照点的距离不变,所以如果物体的形状不是规则的,那么它自己也会自转,以保证半径相同)
RotateAround中第一个参赛时旋转参照点,第二个参数是旋转方向

Vector3 turnTarget = Vector3.zero;
turnTarget.y = transform.position.y;
transform.RotateAround(turnTarget, Vector3.up, Time.deltaTime * turnSpeed);

示例脚本:文章来源地址https://www.toymoban.com/news/detail-784420.html

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;

public class MoveToTowards : MonoBehaviour
{
    Vector3 endPosition = new Vector3(3, 3, 3);
    Vector3 startPosition;
    bool isStart = false;
    float speed = 10;

    Vector3 dir;

    void Start()
    {
        startPosition = transform.position;
        endPosition.y = transform.position.y;
        dir = endPosition - startPosition;

        //1、立即转向
        //transform.forward = endPosition - startPosition;

        //2、立即转向
        //transform.LookAt(endPosition);

        //3、立即转向
        //transform.rotation = Quaternion.LookRotation(endPosition - startPosition);

        //4、旋转到某个角度
        Vector3 rotationAngle = new Vector3(0, 45, 0);
        transform.DORotate(rotationAngle, 1);
    }

    float rotationSpeed = 2;
    float turnSpeed = 20;
    void Update()
    {
        //5、匀速
        //Quaternion qq = Quaternion.LookRotation(endPosition - transform.position);
        //transform.rotation = Quaternion.RotateTowards(transform.rotation, qq, Time.deltaTime * speed);

        6、非匀速,一般用于人物旋转(Lerp()是平分长度,Slerp()是平分弧度)
        //Quaternion qq = Quaternion.LookRotation(endPosition - transform.position);
        //transform.rotation = Quaternion.Slerp(transform.rotation, qq, Time.deltaTime * rotationSpeed);

        //7、朝一个方向旋转【自转】
        //transform.Rotate(Vector3.up * Time.deltaTime * speed, Space.World);

        //8、绕着某个点旋转【公转】(旋转时,物体的中心点与旋转参照点的距离不变,所以如果物体的形状不是规则的,那么它自己也会自转,以保证半径相同)
        //Vector3 turnTarget = Vector3.zero;
        //turnTarget.y = transform.position.y;
        //transform.RotateAround(turnTarget, Vector3.up, Time.deltaTime * turnSpeed);

    }
}

到了这里,关于Unity 物体的朝向与旋转的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity手指、鼠标滑动实现物体360度旋转、点击按钮实现物体旋转

    先创建一个ObjectRotation 脚本 之后将该脚本拖动到需要转动的object上 因为如果每次都真机模拟回很麻烦,所以我加入了让鼠标代替手指滑动的脚本来代替手指输入 同样的也是先创建一个MouseRow 脚本 最后我还需要某笔画沿着坐标旋转,代码如下: 里面有我的其他参数,如果读

    2024年02月11日
    浏览(66)
  • unity---物体旋转

    目录   1.旋转的三种方式 2.为Transform.rotation赋值  3.使用Transform.Rotate函数 4. 使用Quaternion.RotateTowards函数  5.使用Transform.LookAt函数 6. Transform.RotateAround 围绕旋转  7.Quaternion.LookRotation 注视旋转  8.Quaternion.FromToRotation 从from到to旋转  9.坑   1.旋转的三种方式 1、矩阵旋转 2、欧拉

    2024年02月07日
    浏览(36)
  • Unity 物体旋转

          在Unity中经常会用到物体的旋转,常用的方式一般是使用欧拉角和四元数。 欧拉角: Demo:    让物体分别绕x,y,z轴旋转 1 rad。    这里有个问题,当物体绕x轴旋转90度之后,再让y或z轴继续旋转,会发现,物体只能绕   y轴旋转。出现这种现象的原因是死锁了。欧拉角

    2024年02月13日
    浏览(41)
  • Unity物体旋转

    在Unity中,旋转是指将对象绕其自身的某个轴旋转一定角度的操作。 Unity提供了多种旋转方法,以下是其中的一些: 如果需要缓慢的旋转可以使用第4,5两个方法之一 Unity官方还提供很多方法,可以参考官方文档 1.Transform.Rotate方法 Transform.Rotate方法是最基本的旋转方法,它可

    2024年02月09日
    浏览(45)
  • unity旋转物体的操作

            例如绕物体的Z轴在-40°~40°之间进行旋转 注意!!! Unity引擎中使用的欧拉角范围在0°~360° 而脚本中的角度的范围却没有这个限制 若脚本中的角度在这个范围外,Unity会在引擎内把该角度转换在这个范围内 所以当脚本中角度为**负数**或**超过**360°**时会转换为

    2024年01月16日
    浏览(44)
  • Unity实现物体绕指定轴旋转

    在Unity中,我们经常需要控制物体的旋转行为。有时候,我们需要让物体绕指定的轴旋转,而不是默认的旋转轴。在本文章中,我将展示如何使用C#脚本来实现这个功能。 首先,我们需要创建一个空对象,并将它作为父对象,然后将我们想要旋转的物体作为子对象。这样,我

    2024年01月23日
    浏览(46)
  • Unity 四元数与物体旋转

    由三个角度(x,y,z)组成 在特定坐标系下用于描述物体的旋转量 空间中的任意旋转都可以分解成绕三个互相垂直轴的三个旋转角组成的序列 欧拉角旋转约定——heading-pitch-bank 这是一种最常用的旋转序列约定——Y-X-Z约定 heading:物体绕自身的对象坐标系的Y轴旋转的角度 pitch:物体

    2024年01月18日
    浏览(59)
  • unity使物体运行时自动旋转

    using System.Collections; using System.Collections.Generic; using UnityEngine; public class jiaobeng : MonoBehaviour {     public float speed = 80f;     // Update is called once per frame     void Update () {         transform.Rotate(Vector3.up * Time.deltaTime * speed);     } } 需要将脚本挂在需要自动旋转的物体component上即可运行

    2024年02月12日
    浏览(43)
  • 【Unity入门】11.脚本控制物体旋转

        大家好,我是Lampard~~     欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (1)创建RotateLogic脚本     上一篇文章我们学习了如何在脚本中获取物体对象,并使用transform组件下的translate接口使物体运动     今天我们进一步学习,用脚本控制物体的旋转。首先

    2024年02月04日
    浏览(45)
  • unity物体旋转:RigidBody.AddTorque

    在Unity中让物体旋转的方法有很多,但是如果想让物体旋转得像现实一样有平滑的加速减速惯性那么用AddTorque是一个很好的选择。 Rigidbody.AddTorque方法在2D和3D中都有该方法,但是不太一样,在官方文档中的描述是Rigidbody.AddTorque向刚体添加扭矩,而Rigidbody2D.AddTorque则是在刚体的

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包