본문 바로가기
KDT/유니티 기초

23/08/02 키보드로 인풋 받아 이동하기

by 잰쟁 2023. 8. 3.
728x90
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HeroController : MonoBehaviour
{
   
    // Start is called before the first frame update
    void Start()
    {
         
    }

    // Update is called once per frame
    void Update()
    {
        //키보드 좌우 인풋을 받아 -1,0,1 출력
        float h = Input.GetAxisRaw("Horizontal");  //-1,0,1
        //h; 방향 의미하는 값
        Debug.LogFormat("===>{0}", (int)h);

        //좌우반전 스케일의 X값을 -1로 한다. 이때 Y,Z의 값은 1이어야 함
        //즉, 좌: (-1,1,1)
        //우: (1,1,1)
        if (h == 0)
        {
            //키보드를 누르지 않은 상태 : 멈춤상태
        }
        else
        {
            //누른상태 좌(-1) 우(1) : 이동상태
            this.transform.localScale = new Vector3(h, 1, 1);
        }   
    }  
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HeroController : MonoBehaviour
{
    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()
    {
        //키보드 좌우 인풋을 받아 -1,0,1 출력
        float h = Input.GetAxisRaw("Horizontal");  //-1,0,1
        //h: 방향 의미하는 값
        Debug.LogFormat("===>{0}", (int)h);

        //좌우반전 스케일의 X값을 -1로 한다. 이때 Y,Z의 값은 1이어야 함
        //즉, 좌: (-1,1,1)
        //우: (1,1,1)
        if (h == 0)
        {
            //키보드를 누르지 않은 상태 : 멈춤상태
        }
        else
        {
            //누른상태 좌(-1) 우(1) : 이동상태
            this.transform.localScale = new Vector3(h, 1, 1);

            //리지드바디가 없을 경우 이동?
            //h : x축 방향
            Vector3 dir = new Vector3(h, 0, 0);
            //속도
            float speed = 1f;
            //this.transform.Translate(방향 * 속도 * 시간);
            this.transform.Translate(dir * speed * Time.deltaTime);

            //애니메이션 전환
            //멈춤 : 기본동작  h값이 0 즉, dir 값이 (0,0,0)벡터 = Vector3.zero
            //이동 : 뛰는동작  h값이 0이 아니다. -1 또는 1일 경우
            //Animator의 매개변수에 값을 할당하면
            //Animator Controller의 transition에 설정된 condition에 의해 전환됨
            this.anim.SetInteger("h", (int)h);

        }   
    }  
}