5.角色移动
5.1 知识点
要点分析
创建角色脚本,定义移动速度,动画组件和输入参数,初始化得到动画组件。
//移动速度
public float moveSpeed = 5;
//动画控制相关组件
private Animator roleAnimator;
//输入移动相关的系数
private float horizontalMove;
void Start()
{
roleAnimator = this.GetComponent<Animator>();
}
在Update中检测输入修改面朝向切换动画并移动。
void Update()
{
#region 移动相关逻辑
//得到水平方向的输入 一般就是左右键输入
//-1 0 1 三个值
horizontalMove = Input.GetAxisRaw("Horizontal");
//面朝左
if (horizontalMove < 0)
this.transform.rotation = Quaternion.Euler(0, -90, 0);
else if (horizontalMove > 0)
this.transform.rotation = Quaternion.Euler(0, 90, 0);
//当有输入时,直接朝面朝向移动即可
if (horizontalMove != 0)
this.transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
//跑步动画的切换
roleAnimator.SetBool("isRun", horizontalMove != 0);
#endregion
}
5.2 知识点代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RoleObj : MonoBehaviour
{
//移动速度
public float moveSpeed = 5;
//动画控制相关组件
private Animator roleAnimator;
//输入移动相关的系数
private float horizontalMove;
void Start()
{
roleAnimator = this.GetComponent<Animator>();
}
void Update()
{
#region 移动相关逻辑
//得到水平方向的输入 一般就是左右键输入
//-1 0 1 三个值
horizontalMove = Input.GetAxisRaw("Horizontal");
//面朝左
if (horizontalMove < 0)
this.transform.rotation = Quaternion.Euler(0, -90, 0);
else if (horizontalMove > 0)
this.transform.rotation = Quaternion.Euler(0, 90, 0);
//当有输入时,直接朝面朝向移动即可
if (horizontalMove != 0)
this.transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
//跑步动画的切换
roleAnimator.SetBool("isRun", horizontalMove != 0);
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com