Unity滚滚车轮计划 之 新输入系统控制2D角色移动动画(俯视)

        本系列的初衷是因为很多时候基础代码不得不重复又重复,所以为了更快更好地学习到新的知识,我就把已经掌握的知识造成自己的轮子吧,等用到的时候直接复制就行了

叠甲:虽然不能保证全是原创,有些写法可能烂大街,但肯定是我自己学会了之后可能稍加改动,再敲上去的,知识不就是这么传递下去的吗,嘻嘻

 实现效果:

代码一览 

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

public class PlayerMove : MonoBehaviour {
    #region 基础变量部分
    // 组件
    private HereReplace inputs; // 新输入系统的对象
    private Rigidbody2D rb;
    private Animator playerAnimator;
    //人物控制
    [Tooltip("移动速度")]
    [SerializeField] private float playerSpeed;
    [Tooltip("二元变量")]
    private Vector2 wasd;
    #endregion
    #region 初始化和退出脚本部分
    private void Awake() {
        // 初始化变量
        playerSpeed = 200f;
        inputs = new HereReplace();
        rb = GetComponent<Rigidbody2D>();
        playerAnimator = GetComponent<Animator>();

        // 输入启用和订阅
        EnableInputs();
    }

    private void OnDisable() {
        // 输入退出和取消订阅
        DisableInputs();
    }
    //输入系统启用函数
    private void EnableInputs() {
        inputs.Enable();
        inputs.Player.Move.started += OnMove;
        inputs.Player.Move.performed += OnMove;
        inputs.Player.Move.canceled += OnMove;
    }
    //输入系统退出函数
    private void DisableInputs() {
        inputs.Player.Move.started -= OnMove;
        inputs.Player.Move.performed -= OnMove;
        inputs.Player.Move.canceled -= OnMove;
        inputs.Disable();
    }
    #endregion
    //逻辑部分
    private void Update() {
        #region 控制动画
        playerAnimator.SetFloat("X", rb.velocity.x);
        playerAnimator.SetFloat("Y", rb.velocity.y);
        playerAnimator.SetFloat("idle2walk", wasd.magnitude);
        #endregion
    }
    //物理逻辑部分
    private void FixedUpdate() {
        rb.velocity = wasd.normalized * playerSpeed * Time.deltaTime;
    }
    // 二元变量赋值
    private void OnMove(InputAction.CallbackContext context) {
        wasd = context.ReadValue<Vector2>();
    }
}

提示

HereReplace是你的InputAction生成的C#脚本名,也就是类名可自行修改

动画一览

切换变量

2D混合树,四方向移动

  • 18
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值