유니티 심화

SpaceShooter2D - 움직이기, 가두기, 애니메이션(오른쪽,왼쪽,센터)

다모아 2023. 8. 16. 18:16
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    [SerializeField]
    private float moveSpeed = 3f;

    private Animator anim;
    // Start is called before the first frame update
    void Start()
    {
        this.anim = this.GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        //움직이고 화면가두기
        float h = Input.GetAxisRaw("Horizontal");
        float v = Input.GetAxisRaw("Vertical");

        Vector2 moveDir = (Vector2.up * v) + (Vector2.right * h);
        this.transform.Translate(moveDir.normalized * this.moveSpeed * Time.deltaTime);

        float clampX = Mathf.Clamp(this.transform.position.x, -2.30f, 2.30f);
        float clampY = Mathf.Clamp(this.transform.position.y, -4.50f, 4.50f);

        this.transform.position = new Vector2(clampX, clampY);

        //왼쪽 방향키 누르면 애니메이션 왼쪽 실행
        if(Input.GetKey(KeyCode.LeftArrow))
        {
            this.anim.SetInteger("State", 1);     
        }
        //오른쪽 방향키 누르면 애니메이션 오른쪽 실행
        else if (Input.GetKey(KeyCode.RightArrow))
        {
            this.anim.SetInteger("State", 2);
        }
        //아무것도 아니라면 애니메이션 센터 실행
        else
        {
            this.anim.SetInteger("State", 0);
        }

        ////왼쪽 벽
        //if(this.transform.position.x <= -2.30f)
        //{
        //    Vector2 leftDontMoveDir = moveDir - Vector2.left;
        //    //못나가게 막는다.
        //    this.transform.Translate(leftDontMoveDir * this.moveSpeed * Time.deltaTime);
        //}
        ////오른쪽 벽
        //else if(this.transform.position.x >= 2.30f)
        //{
        //    Vector2 rightDontMoveDir = moveDir - Vector2.right;
        //    //못나가게 막는다.
        //    this.transform.Translate(rightDontMoveDir * this.moveSpeed * Time.deltaTime);
        //}
        ////아래 벽
        //else if(this.transform.position.y <= -4.50f)
        //{
        //    Vector2 downDontMoveDir = moveDir - Vector2.down;
        //    //못나가게 막는다.
        //    this.transform.Translate(downDontMoveDir * this.moveSpeed * Time.deltaTime);
        //}
        ////위 벽
        //else if(this.transform.position.y >= 4.50f)
        //{
        //    Vector2 upDontMoveDir = moveDir - Vector2.up;
        //    //못나가게 막는다.
        //    this.transform.Translate(upDontMoveDir * this.moveSpeed * Time.deltaTime);
        //}
        //else if(this.transform.position.x <= -2.30f && this.transform.position.y <= -4.50f)
        //{
        //    Vector2 leftDownMoveDir = moveDir - Vector2.left - Vector2.down;
        //    this.transform.Translate(leftDownMoveDir * this.moveSpeed * Time.deltaTime);
        //}
        //else
        //{
        //    this.transform.Translate(moveDir.normalized * this.moveSpeed * Time.deltaTime);
        //}
    }
}