From 143cc8a4209959169e3396a9a6d808848d5e0a57 Mon Sep 17 00:00:00 2001 From: nakjun Date: Wed, 17 Jun 2026 15:26:15 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=EB=82=98=EB=AC=B4=EC=86=90=20=ED=94=8C?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=96=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity | 4 ++-- .../04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab | 3 +++ .../Hands/WoodHand/LeftHand_StylizedWood.prefab.meta | 7 +++++++ .../04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab | 3 +++ ...Wood.prefab.meta => RightHand_StylizedWood.prefab.meta} | 0 Assets/04_Models/Hands/WoodHand/RightHand_Wood.prefab | 3 --- Assets/04_Models/Player.prefab | 3 +++ Assets/04_Models/Player.prefab.meta | 7 +++++++ 8 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab create mode 100644 Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab.meta create mode 100644 Assets/04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab rename Assets/04_Models/Hands/WoodHand/{RightHand_Wood.prefab.meta => RightHand_StylizedWood.prefab.meta} (100%) delete mode 100644 Assets/04_Models/Hands/WoodHand/RightHand_Wood.prefab create mode 100644 Assets/04_Models/Player.prefab create mode 100644 Assets/04_Models/Player.prefab.meta diff --git a/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity b/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity index f04931b6..41310a84 100644 --- a/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity +++ b/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e845ecf68887a05690bc9b57b3af34fd55ed2b55df114c9217624a30a05f45e6 -size 63804 +oid sha256:0fa656c640c30a3f28676859a33a5d1ccad3b6ed9de6e6c8039a0e8bc73ae6d0 +size 61946 diff --git a/Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab b/Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab new file mode 100644 index 00000000..410c8158 --- /dev/null +++ b/Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21ae8f72b64b4d7e38cbc1ad0ae8300d89d6391b286ac178dc6c4ab8115f0ec3 +size 3932 diff --git a/Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab.meta b/Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab.meta new file mode 100644 index 00000000..cde48bfd --- /dev/null +++ b/Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9a534fd8b03ad4d4bb52186f1b14673e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab b/Assets/04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab new file mode 100644 index 00000000..f35089be --- /dev/null +++ b/Assets/04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9242ccb0cad66af6fad375e38983a67be4db6405a1c451dc8766fdb567d481b +size 35889 diff --git a/Assets/04_Models/Hands/WoodHand/RightHand_Wood.prefab.meta b/Assets/04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab.meta similarity index 100% rename from Assets/04_Models/Hands/WoodHand/RightHand_Wood.prefab.meta rename to Assets/04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab.meta diff --git a/Assets/04_Models/Hands/WoodHand/RightHand_Wood.prefab b/Assets/04_Models/Hands/WoodHand/RightHand_Wood.prefab deleted file mode 100644 index 5726aee1..00000000 --- a/Assets/04_Models/Hands/WoodHand/RightHand_Wood.prefab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cafadd9ec8e8fb9bcc6006c4a245c892e5f03f7dc673a279d1eaaaa56360c2f9 -size 35929 diff --git a/Assets/04_Models/Player.prefab b/Assets/04_Models/Player.prefab new file mode 100644 index 00000000..eb709dcd --- /dev/null +++ b/Assets/04_Models/Player.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c897c4abb75533601e82f99636a6b1d1cc6232fee4cc9a4968c7f9b5deb83fa +size 75193 diff --git a/Assets/04_Models/Player.prefab.meta b/Assets/04_Models/Player.prefab.meta new file mode 100644 index 00000000..ceb613d9 --- /dev/null +++ b/Assets/04_Models/Player.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 401911b5467339048803f487515483df +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 9ad68134c07d19fb95b2253bb369872a04978296 Mon Sep 17 00:00:00 2001 From: nakjun Date: Wed, 17 Jun 2026 16:10:02 +0900 Subject: [PATCH 2/4] =?UTF-8?q?2026-06-17=20=EB=82=98=EB=AC=B4=EC=86=90=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WhaleAdventure_VR/WhaleAttackScene.unity | 4 +- Assets/02_Scripts/Player/PlayerController.cs | 41 +++++++++++++++++-- .../WoodHand/LeftHand_StylizedWood.prefab | 4 +- .../WoodHand/Poses/WHPose_GrabStick.asset | 3 ++ .../Poses/WHPose_GrabStick.asset.meta | 8 ++++ .../Hands/WoodHand/Poses/WHPose_Point.asset | 3 ++ .../WoodHand/Poses/WHPose_Point.asset.meta | 8 ++++ .../WoodHand/RightHand_StylizedWood.prefab | 4 +- Assets/04_Models/Player.prefab | 4 +- .../XR/Settings/Open VR Settings.asset | 4 +- .../Resources/HandPoserSettings.asset | 4 +- 11 files changed, 72 insertions(+), 15 deletions(-) create mode 100644 Assets/04_Models/Hands/WoodHand/Poses/WHPose_GrabStick.asset create mode 100644 Assets/04_Models/Hands/WoodHand/Poses/WHPose_GrabStick.asset.meta create mode 100644 Assets/04_Models/Hands/WoodHand/Poses/WHPose_Point.asset create mode 100644 Assets/04_Models/Hands/WoodHand/Poses/WHPose_Point.asset.meta diff --git a/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity b/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity index 41310a84..8f472f2e 100644 --- a/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity +++ b/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fa656c640c30a3f28676859a33a5d1ccad3b6ed9de6e6c8039a0e8bc73ae6d0 -size 61946 +oid sha256:33a976e0f1efed4f1655f1307a435c47fdcf195e776578f1f9e1cc3f012d5a3c +size 65004 diff --git a/Assets/02_Scripts/Player/PlayerController.cs b/Assets/02_Scripts/Player/PlayerController.cs index f3312f2f..145bb8db 100644 --- a/Assets/02_Scripts/Player/PlayerController.cs +++ b/Assets/02_Scripts/Player/PlayerController.cs @@ -1,15 +1,50 @@ -using System.Collections.Generic; using UnityEngine; +[RequireComponent(typeof(Rigidbody))] public class PlayerController : MonoBehaviour,ISceneInitializable { + [Header("점프 설정")] + [SerializeField] private float _jumpForce = 5f; // 점프 세기(임펄스) + [SerializeField] private float _groundCheckDistance = 0.2f; // 바닥 판정 레이 길이 + [SerializeField] private LayerMask _groundLayer = ~0; // 바닥으로 인정할 레이어 + + private Rigidbody _rb; + + private void Awake() + { + _rb = GetComponent(); + } + public void OnSceneLoaded() { + // 중복 구독 방지 후 등록 (씬이 다시 로드돼도 한 번만 구독되도록) + InputManager.Instance.OnJump_Event -= this.OnJump; InputManager.Instance.OnJump_Event += this.OnJump; } public void OnJump() { - + if (_rb == null) + { + Debug.LogWarning("[PlayerController] Rigidbody가 없어 점프할 수 없습니다.", this); + return; + } + + // 바닥에 닿아 있을 때만 점프 (공중 연속 점프 방지) + if (!IsGrounded()) return; + + // 수직 속도를 초기화한 뒤 위로 임펄스를 줘서 항상 같은 높이로 점프 + Vector3 v = _rb.linearVelocity; + v.y = 0f; + _rb.linearVelocity = v; + _rb.AddForce(Vector3.up * _jumpForce, ForceMode.Impulse); } -} \ No newline at end of file + + // 발밑으로 짧은 레이를 쏴서 바닥 접촉 여부 확인 + private bool IsGrounded() + { + Vector3 origin = transform.position + Vector3.up * 0.05f; + return Physics.Raycast(origin, Vector3.down, _groundCheckDistance + 0.05f, _groundLayer, + QueryTriggerInteraction.Ignore); + } +} diff --git a/Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab b/Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab index 410c8158..fd832804 100644 --- a/Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab +++ b/Assets/04_Models/Hands/WoodHand/LeftHand_StylizedWood.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21ae8f72b64b4d7e38cbc1ad0ae8300d89d6391b286ac178dc6c4ab8115f0ec3 -size 3932 +oid sha256:e24ecc59c3ed500c157c6ae5655ed6ee5eba8869554e78570805dcece98f5888 +size 23211 diff --git a/Assets/04_Models/Hands/WoodHand/Poses/WHPose_GrabStick.asset b/Assets/04_Models/Hands/WoodHand/Poses/WHPose_GrabStick.asset new file mode 100644 index 00000000..da576886 --- /dev/null +++ b/Assets/04_Models/Hands/WoodHand/Poses/WHPose_GrabStick.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4675375c3170ba56cddbf8d1dbe1e5a6d3e67e41c6407098ce6080a7d810be79 +size 5036 diff --git a/Assets/04_Models/Hands/WoodHand/Poses/WHPose_GrabStick.asset.meta b/Assets/04_Models/Hands/WoodHand/Poses/WHPose_GrabStick.asset.meta new file mode 100644 index 00000000..22e61a48 --- /dev/null +++ b/Assets/04_Models/Hands/WoodHand/Poses/WHPose_GrabStick.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44d9c2fc7cd20f041829401580b55417 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/04_Models/Hands/WoodHand/Poses/WHPose_Point.asset b/Assets/04_Models/Hands/WoodHand/Poses/WHPose_Point.asset new file mode 100644 index 00000000..0e09c2f0 --- /dev/null +++ b/Assets/04_Models/Hands/WoodHand/Poses/WHPose_Point.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7fc74778ef80efaa179e7eb7d66b3bb10bab4575c195237acd1b72d121a0928 +size 5024 diff --git a/Assets/04_Models/Hands/WoodHand/Poses/WHPose_Point.asset.meta b/Assets/04_Models/Hands/WoodHand/Poses/WHPose_Point.asset.meta new file mode 100644 index 00000000..718208a0 --- /dev/null +++ b/Assets/04_Models/Hands/WoodHand/Poses/WHPose_Point.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b010d83e1b47a0b489dea53925158b33 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab b/Assets/04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab index f35089be..d3f5772c 100644 --- a/Assets/04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab +++ b/Assets/04_Models/Hands/WoodHand/RightHand_StylizedWood.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9242ccb0cad66af6fad375e38983a67be4db6405a1c451dc8766fdb567d481b -size 35889 +oid sha256:95d27fd2ced82a4a64cb2fc805af36b99d63a7da8c4d055000c1d112afa2c121 +size 37006 diff --git a/Assets/04_Models/Player.prefab b/Assets/04_Models/Player.prefab index eb709dcd..c6b6e7b0 100644 --- a/Assets/04_Models/Player.prefab +++ b/Assets/04_Models/Player.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c897c4abb75533601e82f99636a6b1d1cc6232fee4cc9a4968c7f9b5deb83fa -size 75193 +oid sha256:ae7af51dac7e3b584ae0031d87ef28e23145a7aab2bbf2f231dbb650418278c5 +size 77007 diff --git a/Assets/XRI Starter Kit/Assets/Settings/XR/Settings/Open VR Settings.asset b/Assets/XRI Starter Kit/Assets/Settings/XR/Settings/Open VR Settings.asset index e2357fc9..096a150f 100644 --- a/Assets/XRI Starter Kit/Assets/Settings/XR/Settings/Open VR Settings.asset +++ b/Assets/XRI Starter Kit/Assets/Settings/XR/Settings/Open VR Settings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c234abd793d299b01b9178ee4b65c9dc2f0e6696e567cb4e4dc81d60a48e1f2 -size 722 +oid sha256:7cb0d4385688cdbe9d20019027f657da3d0084dc69763c488d8691c922a9a537 +size 999 diff --git a/Assets/XRI Starter Kit/Resources/HandPoserSettings.asset b/Assets/XRI Starter Kit/Resources/HandPoserSettings.asset index 54a604f3..9f96c538 100644 --- a/Assets/XRI Starter Kit/Resources/HandPoserSettings.asset +++ b/Assets/XRI Starter Kit/Resources/HandPoserSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:680ecb93dcce8c5c511593d487b58a7c61fac4c2b14089147c8d30bb02ac89d7 -size 1609 +oid sha256:37f03201d36157fc0ccf56ceae0091cd82eeab4c94589302c5bc8330d1d2deb0 +size 1072 From 4710a0da95fa57d1774645a1efc87994f19cf7cb Mon Sep 17 00:00:00 2001 From: nakjun Date: Wed, 17 Jun 2026 16:43:33 +0900 Subject: [PATCH 3/4] 2026-06-17 --- .../WhaleAdventure_VR/WhaleAttackScene.unity | 4 +- Assets/02_Scripts/Player/PlayerController.cs | 51 +++++++++---------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity b/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity index 8f472f2e..5a407346 100644 --- a/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity +++ b/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33a976e0f1efed4f1655f1307a435c47fdcf195e776578f1f9e1cc3f012d5a3c -size 65004 +oid sha256:a83be1212d71adfb0d4630d53f17cd3c1f71ebd4ef069da501b6a09ad9b3dc00 +size 68116 diff --git a/Assets/02_Scripts/Player/PlayerController.cs b/Assets/02_Scripts/Player/PlayerController.cs index 145bb8db..6e050d62 100644 --- a/Assets/02_Scripts/Player/PlayerController.cs +++ b/Assets/02_Scripts/Player/PlayerController.cs @@ -1,50 +1,47 @@ using UnityEngine; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement; -[RequireComponent(typeof(Rigidbody))] -public class PlayerController : MonoBehaviour,ISceneInitializable +public class PlayerController : MonoBehaviour, ISceneInitializable { [Header("점프 설정")] - [SerializeField] private float _jumpForce = 5f; // 점프 세기(임펄스) - [SerializeField] private float _groundCheckDistance = 0.2f; // 바닥 판정 레이 길이 - [SerializeField] private LayerMask _groundLayer = ~0; // 바닥으로 인정할 레이어 + [SerializeField] private float _jumpHeight = 1.2f; - private Rigidbody _rb; + private Vector3 _playerVelocity; + private CharacterController _controller; + private ContinuousMoveProvider _moveProvider; + private float gravityValue = Physics.gravity.y; private void Awake() { - _rb = GetComponent(); + _controller = GetComponentInChildren(true); + _moveProvider = GetComponentInChildren(true); } public void OnSceneLoaded() { - // 중복 구독 방지 후 등록 (씬이 다시 로드돼도 한 번만 구독되도록) + // 씬이 다시 로드돼도 한 번만 구독되도록 중복 제거 후 등록 InputManager.Instance.OnJump_Event -= this.OnJump; InputManager.Instance.OnJump_Event += this.OnJump; } public void OnJump() { - if (_rb == null) + if (_controller == null) return; + if (!_controller.isGrounded) return; + + _playerVelocity.y = Mathf.Sqrt(_jumpHeight * -2f * gravityValue); + } + + private void Update() + { + // 바닥 체크 및 Y축 속도 초기화 + if (_controller.isGrounded && _playerVelocity.y < 0) { - Debug.LogWarning("[PlayerController] Rigidbody가 없어 점프할 수 없습니다.", this); - return; + // 완전히 0으로 두면 바닥 감지가 불안정할 수 있으므로 약간의 음수 값을 유지 + _playerVelocity.y = -2f; } - // 바닥에 닿아 있을 때만 점프 (공중 연속 점프 방지) - if (!IsGrounded()) return; - - // 수직 속도를 초기화한 뒤 위로 임펄스를 줘서 항상 같은 높이로 점프 - Vector3 v = _rb.linearVelocity; - v.y = 0f; - _rb.linearVelocity = v; - _rb.AddForce(Vector3.up * _jumpForce, ForceMode.Impulse); - } - - // 발밑으로 짧은 레이를 쏴서 바닥 접촉 여부 확인 - private bool IsGrounded() - { - Vector3 origin = transform.position + Vector3.up * 0.05f; - return Physics.Raycast(origin, Vector3.down, _groundCheckDistance + 0.05f, _groundLayer, - QueryTriggerInteraction.Ignore); + _playerVelocity.y += gravityValue * Time.deltaTime; + _controller.Move(_playerVelocity * Time.deltaTime); } } From b162d9fcc74e92aea122e220ef30fcdd3469f880 Mon Sep 17 00:00:00 2001 From: nakjun Date: Wed, 17 Jun 2026 17:42:52 +0900 Subject: [PATCH 4/4] =?UTF-8?q?2026-06-17=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity | 4 ++-- Assets/04_Models/Player.prefab | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity b/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity index 5a407346..0f295927 100644 --- a/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity +++ b/Assets/01_Scenes/WhaleAdventure_VR/WhaleAttackScene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a83be1212d71adfb0d4630d53f17cd3c1f71ebd4ef069da501b6a09ad9b3dc00 -size 68116 +oid sha256:7a0e6106b0d5561f04e6585b8f1abcd4a74db954284e213aec3885d7285126b3 +size 69534 diff --git a/Assets/04_Models/Player.prefab b/Assets/04_Models/Player.prefab index c6b6e7b0..ccc36439 100644 --- a/Assets/04_Models/Player.prefab +++ b/Assets/04_Models/Player.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae7af51dac7e3b584ae0031d87ef28e23145a7aab2bbf2f231dbb650418278c5 -size 77007 +oid sha256:356a03f4eec731823b24446ee7efd6aedaadfb643fc1e30a317f3d7d54d32f7d +size 76054