当前位置:   article > 正文

Unity 角色朝向目标 / 动态转向动画_unity 朝向

unity 朝向

在Unity中我们通常会改变角色或物体的朝向,一般实现朝向的方法可以视为静态和动态两种过程。具体是指:

  1. 静态过程,即角色的朝向在一个Update帧中就完成,rotation 是立刻就改变的;
  2. 动态过程,即角色的朝向在多个帧中持续实现的过程,表现为连续的动画过程;

一、静态角色转向

Unity中角色的静态转向主要使用 Transform.LookAt(目标位置)

1.1 C# 脚本

//***初始化
public Transform Player; 		// 需要修改方向的物体或角色 
public Transform LookTarget; 	// 需要朝向的目标

//***修改Player朝向
Player.transform.LookAt(LookTarget.position);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

1.2 Unity 实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 修改

有时候我们期望物体只是朝向这个目标,旋转只在X和Z轴,不涉及Y轴。我们只需要将LookAt 目标位置的Y值,设置为Player自身的Y值即可。

//***修改Player朝向
Player.transform.LookAt(LookTarget.position);
  • 1
  • 2

在这里插入图片描述

二、动态角色转向

Unity中角色的动态连续转向过程一般要在持续一段时间中,以增量的形式不断累加,以达到持续的效果。主要会使用到 Quaternion.Slerp( Quaternion a, Quaternion b, float t ),以及协程 StartCoroutine(协程函数名) + IEnumerator(协程函数名) 来实现。

2.1 C# 脚本

//*** 5.0f * Time.deltaTime 速度完成转向
Player.rotation = Quaternion.Slerp(Player.rotation, //1-5 Group 先后随机转向Guide
                                Quaternion.LookRotation(new Vector3( LookTarget.position.x - Player.position.x,0, LookTarget.position.z - Player.position.z)),
                                5.0f * Time.deltaTime);
  • 1
  • 2
  • 3
  • 4
// 使用协程完成每次
 bool turnArround = false;  //  bool类型标识          
 
 //***实现功能---每次按下 T 键,完成转向 
 void Update()
    {
        if (Input.GetKeyDown(KeyCode.T))  // 触发条件---键盘T键按下
        {
            turnArround = true; 
        }
        if (turnArround == true)
        {
            StartCoroutine(TurnArround());
        }
    }

    IEnumerator TurnArround() //*** 5.0f * Time.deltaTime 速度完成转向
    {
        Player.rotation = Quaternion.Slerp(Player.rotation, //1-5 Group 先后随机转向Guide
                                Quaternion.LookRotation(new Vector3( LookTarget.position.x - Player.position.x,0, LookTarget.position.z - Player.position.z)),
                                5.0f * Time.deltaTime);

        yield return new WaitForSeconds(1f);
        turnArround = false; 
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

2.2 Unity 实现

每次键入T键,Player完成连续转向动作。效果如下。
在这里插入图片描述

写在最最最后

其实,每次实现一些功能后,后面自己在做还是会有点忘记,虽然内容都比较基础,但还是想把它记下来,下次再做到的时候会更方便,也希望能够帮助到你~
以后,会把在研究过程中遇到的方法总结一下,写博客分享给大家,多多关注,一起努力!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/83385
推荐阅读
相关标签
  

闽ICP备14008679号