0
点赞
收藏
分享

微信扫一扫

unity2D笔记-控制人物左右移动

夏沐沐 2022-04-16 阅读 78
unity

控制人物左右移动,同时加入左右移动人物翻转控制。
有两种方法:
1.更新 x的速度,通过速度正负判断翻转。(注释的代码)
2.获取位置帧,通过位置帧和初始帧的大小判断是否翻转。

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

public class Player: MonoBehaviour
{
    Rigidbody2D rigidbody2d;
    // Start is called before the first frame update
    SpriteRenderer spriteRenderer;
    public float speedX; //X方向的速度
    void Start()
    {
        //获取刚体属性
        rigidbody2d = transform.GetComponent<Rigidbody2D>();
        //
        spriteRenderer =transform.GetComponent<SpriteRenderer>();
       
    }

    // Update is called once per frame
    void Update()
    {
    
        // if(Input.GetKey(KeyCode.A)){
        //     SetSpeedX(-speedX);
        // }
        //   if(Input.GetKey(KeyCode.D)){
        //    SetSpeedX(speedX);
        //  }
        //  if(!Input.GetKey(KeyCode.A)&&!Input.GetKey(KeyCode.D)){
        //      SetSpeedX(0);
        //  }
        //由于是只控制左右,因此Y值拿刚体默认的速度值即可
        Vector2 movement = new Vector2(Input.GetAxisRaw("Horizontal"), rigidbody2d.velocity.y);
        Vector2 startPos = rigidbody2d.position;
        Vector2 targetPos = rigidbody2d.position + movement * Time.deltaTime * speedX;
        if(targetPos.x < startPos.x)
        {
            spriteRenderer.flipX = true;
        }
        else
        {
            spriteRenderer.flipX = false;
        }
        rigidbody2d.MovePosition(targetPos);
    }
    #region 控制速度方法
    public void SetSpeedX(float x){
    if(x<0)
    {
        //控制翻转
        spriteRenderer.flipX=true;
    }else if(x>0){
        spriteRenderer.flipX=false;
    }
    rigidbody2d.velocity = new Vector2(x,rigidbody2d.velocity.y);
}
public void SetSpeedY(float y){
     rigidbody2d.velocity = new Vector2(rigidbody2d.velocity.x,y);
}
#endregion
}
 
举报

相关推荐

0 条评论