Perekyp/Assets/Scripts/Player/Interactor/PlayerHands.cs

62 lines
1.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
public class PlayerHands : MonoBehaviour
{
[Header("Точка удержания")]
[Tooltip("Пустой дочерний объект перед камерой игрока")]
[SerializeField] private Transform holdPoint;
[Header("Клавиши управления")]
[SerializeField] private KeyCode dropKey = KeyCode.G;
[SerializeField] private KeyCode throwKey = KeyCode.Mouse1; // Правая кнопка мыши
[SerializeField] private float throwForce = 7f;
private CarPart currentPart;
public bool IsHolding => currentPart != null;
public CarPart CurrentPart => currentPart;
public Transform HoldPoint => holdPoint;
private void Update()
{
if (!IsHolding) return;
// Бросить под ноги
if (Input.GetKeyDown(dropKey))
{
DropCurrentPart(Vector3.zero);
}
// Бросить вперед с силой
else if (Input.GetKeyDown(throwKey))
{
Vector3 force = holdPoint.forward * throwForce;
DropCurrentPart(force);
}
}
public void PickUp(CarPart part)
{
if (IsHolding)
{
// Если уже что-то держим — роняем старую деталь под ноги
DropCurrentPart(Vector3.zero);
}
currentPart = part;
currentPart.OnPickedUp(holdPoint);
}
public void DropCurrentPart(Vector3 impulse)
{
if (!IsHolding) return;
CarPart dropped = currentPart;
currentPart = null; // Освобождаем руки
dropped.OnDropped(impulse);
}
public void ClearHandAfterInstall()
{
currentPart = null;
}
}