개인 과제 시작
플레이어 이동 및 마우스 바라보기 기능 구현
getkey 관련 코드들로 플레이어의 움직임을 구현하는건 많이 해봤는데 input action을 통해 이동을 제어하는건 처음이라서 구현하기 전에 기능을 이해하는데 시간이 좀 걸렸다
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.XR;
public class PlayerController : MonoBehaviour
{
public event Action<Vector2> OnMoveEvent;
public event Action<Vector2> OnLookEvent;
private Vector2 _movementDirection = Vector2.zero;
private Rigidbody2D _rigidbody;
private void Awake()
{
_rigidbody = GetComponent<Rigidbody2D>();
}
private void Start()
{
OnMoveEvent += Move;
}
private void FixedUpdate()
{
ApplyMovment(_movementDirection);
}
private void Move(Vector2 direction)
{
_movementDirection = direction;
}
private void ApplyMovment(Vector2 direction)
{
direction = direction * 5;
_rigidbody.velocity = direction;
}
public void CallMoveEvent(Vector2 direction)
{
OnMoveEvent?.Invoke(direction);
}
public void CallLookEvent(Vector2 direction)
{
OnLookEvent?.Invoke(direction);
}
public void OnMove(InputValue value)
{
Vector2 moveInput = value.Get<Vector2>().normalized;
CallMoveEvent(moveInput);
}
public void OnLook(InputValue value)
{
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if (transform.position.x < mousePos.x)
{
Vector3 right = new Vector3(1, 1, 1);
transform.localScale = right;
}
else
{
Vector3 left = new Vector3(-1, 1, 1);
transform.localScale = left;
}
}
}
input action으로 이동을 제어하고 카메라 상의 마우스 위치를 받아서 플레이어와 마우스의 x값 대소를 비교해 x스케일값을 조정하여 캐릭터의 방향을 변경한다
처음에는 localscale.x값에 =으로 직접 대입하려 했으나 vector를 이용해 x,y,z값을 한번에 적용해야 한다는것을 알고 수정
'내일배움캠프_TIL' 카테고리의 다른 글
9월 7일 TIL (0) | 2023.09.07 |
---|---|
9월 6일 TIL (0) | 2023.09.07 |
9월 4일 TIL (0) | 2023.09.04 |
9월 1일 TIL (0) | 2023.09.01 |
8월 31일 TIL (0) | 2023.08.31 |