using UnityEngine;
public class PlayerPickup : MonoBehaviour
{
private bool isInTrigger = false; // Флаг для отслеживания, находится ли персонаж в триггере
private GameObject gun; // Ссылка на объект оружия
// Точка, куда будет перемещён пистолет относительно персонажа
public Transform gunHoldPoint;
void OnTriggerEnter(Collider other)
{
// Проверяем, вошел ли персонаж в триггер объекта с тегом "PM"
if (other.CompareTag("PM"))
{
isInTrigger = true; // Персонаж в триггере
gun = other.gameObject; // Сохраняем ссылку на объект оружия
}
}
void OnTriggerExit(Collider other)
{
// Проверяем, покинул ли персонаж триггер объекта с тегом "PM"
if (other.CompareTag("PM"))
{
isInTrigger = false; // Персонаж покинул триггер
gun = null; // Сброс ссылки на объект оружия
}
}
void Update()
{
// Проверяем, нажата ли клавиша "E" и находится ли персонаж в триггере
if (Input.GetKeyDown(KeyCode.E) && isInTrigger && gun != null)
{
PickupGun(); // Забираем пистолет
}
}
void PickupGun()
{
// Перемещаем пистолет к персонажу
gun.transform.position = gunHoldPoint.position; // Устанавливаем позицию
gun.transform.rotation = gunHoldPoint.rotation; // Устанавливаем ориентацию
gun.transform.SetParent(gunHoldPoint); // Делаем пистолет дочерним элементом к точке удержания
// Включаем или отключаем физику (если нужно)
Rigidbody rb = gun.GetComponent<Rigidbody>();
if (rb != null)
{
rb.isKinematic = true; // Делаем физику пистолета кинематической
}
// Можно скрыть объект, если требуется
gun.SetActive(false); // Если хотите скрыть, уберите это или измените на true
}
}