Unity2D 角色平移

[RequireComponent(typeof(PlayerController))]//附带PlayerController脚本
public class Player : MonoBehaviour
{
    PlayerController controller;
    [Header("属性")]
    public float moveSpeed = 8;

    void Start()
    {
        controller = GetComponent<PlayerController>();
    }

    void Update()
    {
        Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
        /* 
         * GetAxisRaw 不带默认平滑 GetAxis 附带平滑
         * Horizontal代表左右  Vertical代表上下
         * Input.GetAxisRaw("Horizontal")    -1 ~ 1 不包含小数
         * Input.GetAxis("Horizontal")       -1 ~ 1 包含小数
         */
        Vector2 moveVelocity = moveInput.normalized * moveSpeed;
        /*
         * Vector3.normalized :
         * 返回大小为1的向量(只读)。规范化时,向量保持相同的方向,但其长度为1.0。如果向量太小而不能被归一化,则返回一个零向量。
         */
        controller.Move(moveVelocity);
    }
}
[RequireComponent(typeof(Rigidbody2D))]         //附带 Rigidbody2D
[RequireComponent(typeof(CircleCollider2D))]    //附带 CircleCollider2D
public class PlayerController : MonoBehaviour
{
    Vector2 velocity;
    Rigidbody2D myRigidbody2D;
    void Start()
    {
        myRigidbody2D = GetComponent<Rigidbody2D>();
        myRigidbody2D.gravityScale = 0;
    }

    public void Move(Vector2 _velocity) 
    {
        velocity = _velocity;
    }

    private void FixedUpdate()
    {
        //myRigidbody2D.velocity = velocity;
        myRigidbody2D.MovePosition(myRigidbody2D.position + velocity * Time.fixedDeltaTime);
        // Time.fixedDeltaTime 表示俩FixedUpdata() 之间的时间间隔
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值