feat: drop head

This commit is contained in:
timote koenig
2026-03-12 10:33:37 +01:00
parent 94e44ad7af
commit 67a1717b86
9 changed files with 183 additions and 55 deletions

View File

@@ -25,7 +25,7 @@
"initialStateCheck": true
},
{
"name": "Pickup",
"name": "HeadInteract",
"type": "Button",
"id": "5a0c555a-8fc4-4188-9eed-401eb8f017b5",
"expectedControlType": "",
@@ -519,7 +519,7 @@
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "Pickup",
"action": "HeadInteract",
"isComposite": false,
"isPartOfComposite": false
},

View File

@@ -1,3 +1,4 @@
using System.Runtime.CompilerServices;
using UnityEngine;
public class PlayerHeadController : MonoBehaviour
@@ -34,22 +35,27 @@ public class PlayerHeadController : MonoBehaviour
void Update()
{
if (input.HeadInteractionPressed)
{
InteractHead();
}
if (input.ThrowPressed)
{
ThrowHead();
}
if (input.PickupPressed)
{
TryPickupHead();
}
}
private void ThrowHead()
private void InteractHead()
{
if (!isHoldingHead)
return;
TryPickupHead();
else
DropHead();
}
private void DropHead()
{
animator.SetTrigger("Throw");
isHoldingHead = false;
@@ -63,6 +69,14 @@ public class PlayerHeadController : MonoBehaviour
RigidbodyConstraints.FreezeRotationX |
RigidbodyConstraints.FreezeRotationZ |
RigidbodyConstraints.FreezeRotationY;
}
private void ThrowHead()
{
if (!isHoldingHead)
return;
DropHead();
m_headRigidbody.AddForce(CameraTransform.forward * ThrowForce, ForceMode.Impulse);
}
@@ -94,4 +108,4 @@ public class PlayerHeadController : MonoBehaviour
Head.localPosition = m_headInitialLocalPos;
Head.localRotation = m_headInitialLocalRot;
}
}
}

View File

@@ -1,36 +1,35 @@
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Windows;
public class PlayerInputController : MonoBehaviour
{
public InputActionAsset InputActions;
private InputAction m_headInteractAction;
private InputAction m_moveAction;
private InputAction m_lookAction;
private InputAction m_jumpAction;
private InputAction m_throwAction;
private InputAction m_pickupAction;
private InputAction m_shiftAction;
public Vector2 MoveAmount { get; private set; }
public Vector2 LookAmount { get; private set; }
public bool HeadInteractionPressed { get; private set; }
public bool JumpPressed { get; private set; }
public bool ShiftPressed { get; private set; }
public bool ThrowPressed { get; private set; }
public bool PickupPressed { get; private set; }
private void Awake()
{
var map = InputActions.FindActionMap("Player");
m_headInteractAction = map.FindAction("HeadInteract");
m_moveAction = map.FindAction("Move");
m_lookAction = map.FindAction("Look");
m_jumpAction = map.FindAction("Jump");
m_shiftAction = map.FindAction("Shift");
m_throwAction = map.FindAction("Throw");
m_pickupAction = map.FindAction("Pickup");
}
private void OnEnable()
@@ -51,6 +50,6 @@ public class PlayerInputController : MonoBehaviour
ShiftPressed = m_shiftAction.IsPressed();
JumpPressed = m_jumpAction.WasPressedThisFrame();
ThrowPressed = m_throwAction.WasPressedThisFrame();
PickupPressed = m_pickupAction.WasPressedThisFrame();
HeadInteractionPressed = m_headInteractAction.WasPressedThisFrame();
}
}