Artist

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
}
}

версия страницы: 0, Последняя правка: 05 Март 2025, 12:45 (38 дней назад)
Пока не указано иное, содержимое этой страницы распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 License.