5.角色移动

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

×

喜欢就点赞,疼爱就打赏