일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 드래곤 플라이트
- 팀프로젝트
- XR
- 길건너 친구들
- 오브젝트 풀링
- 멀티플레이
- Oculus
- 연습
- CGV
- ChatGPT
- OVR
- 팀 프로젝트
- 개발
- HAPTIC
- 유니티 UI
- 유니티 Json 데이터 연동
- 개발일지
- 유니티
- 유니티 GUI
- input system
- Photon Fusion
- 드래곤 플라이트 모작
- 모작
- VR
- 포트폴리오
- 앱 배포
- meta xr
- 오큘러스
- meta
- 가상현실
Archives
- Today
- Total
EasyCastleUNITY
Hero Shooter new Input System Test 본문
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Windows;
public class TestBindPlayerController : MonoBehaviour
{
private Vector3 moveDir;
private Animator anim;
private PlayerInput playerInput;
private InputActionMap mainActionMap;
private InputAction moveAction;
// Start is called before the first frame update
void Start()
{
this.anim = GetComponent<Animator>();
this.playerInput = GetComponent<PlayerInput>();
this.mainActionMap = this.playerInput.actions.FindActionMap("PlayerActions");
this.moveAction = this.mainActionMap.FindAction("Move");
this.moveAction.performed += (context) =>
{
Vector2 dir = context.ReadValue<Vector2>();
this.moveDir = new Vector3(dir.x, 0, dir.y);
this.anim.SetInteger("State", 1);
};
this.moveAction.canceled += (context) =>
{
this.moveDir = Vector3.zero;
this.anim.SetInteger("State", 0);
};
}
// Update is called once per frame
void Update()
{
if(this.moveDir != Vector3.zero)
{
this.transform.rotation = Quaternion.LookRotation(this.moveDir);
this.transform.Translate(Vector3.forward * Time.deltaTime * 4.0f);
}
}
#region SEND_MESSAGE
void OnMove(InputValue value)
{
Vector2 dir = value.Get<Vector2>();
Debug.LogFormat("dir:{0}", dir);
this.moveDir = new Vector3(dir.x, 0, dir.y);
this.anim.SetInteger("State", 1);
}
#endregion
#region UNITY_EVENTS
public void OnMove(InputAction.CallbackContext context)
{
Vector2 dir = context.ReadValue<Vector2>();
this.moveDir = new Vector3(dir.x, 0, dir.y);
this.anim.SetInteger("State", 1);
}
#endregion
}
Direct Binding
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class TestDirectBindPlayerController : MonoBehaviour
{
private InputAction moveAction;
private Animator anim;
private Vector3 moveDir;
// Start is called before the first frame update
void Start()
{
this.anim = this.GetComponent<Animator>();
//1.액션 만들기
this.moveAction = new InputAction("Move",InputActionType.Value);
//2.바인딩
this.moveAction.AddCompositeBinding("2DVector")
.With("Up", "<Keyboard>/w")
.With("Down", "<Keyboard>/s")
.With("Left", "<Keyboard>/a")
.With("Right", "<Keyboard>/d");
//3.이벤트 붙이기
this.moveAction.performed += (context) => {
Vector2 dir = context.ReadValue<Vector2>();
this.moveDir = new Vector3(dir.x, 0, dir.y);
this.anim.SetInteger("State", 1);
};
this.moveAction.canceled += (context) => {
this.moveDir = Vector3.zero;
this.anim.SetInteger("State", 0);
};
//4. 활성화
this.moveAction.Enable();
}
// Update is called once per frame
void Update()
{
if (this.moveDir != Vector3.zero)
{
//회전
transform.rotation = Quaternion.LookRotation(this.moveDir);
//회전한 후 전진 방향으로 이동
transform.Translate(Vector3.forward * Time.deltaTime * 4.0f);
}
}
}
조이스틱으로 움직이는 것은 좀더 찾아보고 테스트 해봐야 겠다.
'유니티 심화' 카테고리의 다른 글
유니티 데이터 연동 (0) | 2023.09.01 |
---|---|
Hero Shooter 새로운 Input System 활용한 조이스틱 이동 (0) | 2023.09.01 |
HeroShooter 개발일지1 (0) | 2023.08.30 |
HeroShooter 중간과정 정리 (0) | 2023.08.29 |
SpaceShooter2D 오브젝트 풀링 응용 (0) | 2023.08.28 |