본문 바로가기
KDT/유니티 심화

23/08/31 Input System 연습

by 잰쟁 2023. 8. 31.
728x90

4가지 방법 중에 send message 방법이 간단하고 좋은 것 같아서 그 방식으로 해보았다!

 

WarriorController

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

public class WarriorController : MonoBehaviour
{
    private Animator anim;
    private new Transform transform;
    private Vector3 moveDir;

    private void Start()
    {
        this.anim = this.GetComponent<Animator>();
        this.transform = this.GetComponent<Transform>();
    }

    private void Update()
    { 
        if(moveDir != Vector3.zero)
        {
            //진행방향으로 회전
            this.transform.rotation = Quaternion.LookRotation(moveDir);
            //전진 방향으로 이동
            this.transform.Translate(Vector3.forward * Time.deltaTime * 4.0f);
        }
        else
        {
            this.anim.SetInteger("Move", 0);
        }
    }
    //이동
    private void OnMove(InputValue value)
    {
        Vector2 dir = value.Get<Vector2>();
        //Debug.Log(dir);
        //2차원 좌표를 3차원으로 변환
        this.moveDir = new Vector3(dir.x, 0, dir.y);
        //애니메이션
        this.anim.SetInteger("Move",1);
        Debug.LogFormat("moveDir : {0}", moveDir);
    }

    //공격
    private void OnAttack()
    {
        this.anim.SetTrigger("Attack");
        Debug.Log("Attack");
    }
}