Всем привет я столкнулся с проблемой в движке юнити , решил сделать обьект телевизор чтобы игрок к нему подошел, появилась кнопка он нажал на нее и телевизор стал воспроизводить видео, а когда нажимал еще раз эту кнопку то видео выключалось. Когда отошел от предмета то кнопка пропадала. Сделал пару скриптов но один работает криво(нету радиуса действия и кнопка есть всегда,но все работает и телевизор вкючается и выключается) и есть 2 скрипт где я добавил радиус без удаления метода ToggleVideo(у меня без него ничего не работает) то кнопка не появляется вообще и соответственно не работает радиус и сам телевизор. помогите добрые люди пожалуйста))) 1 рабочий скрипт без радиуса using UnityEngine; using UnityEngine.UI;
public class ButtonController : MonoBehaviour { public VideoController videoController;
public void ToggleVideo() { videoController.ToggleVideo(); } } 2 не рабочий вообще с радиусом using UnityEngine; using UnityEngine.UI;
public class ButtonController : MonoBehaviour { public VideoController videoController; public GameObject player; public float radius = 5f; private bool isPlayerInRange = false; private Button button;
public class ButtonController : MonoBehaviour { public VideoController videoController; public GameObject player; public float radius = 5f; public KeyCode activationKey = KeyCode.Space;
1 рабочий скрипт без радиуса
using UnityEngine;
using UnityEngine.UI;
public class ButtonController : MonoBehaviour
{
public VideoController videoController;
public void ToggleVideo()
{
videoController.ToggleVideo();
}
}
2 не рабочий вообще с радиусом
using UnityEngine;
using UnityEngine.UI;
public class ButtonController : MonoBehaviour
{
public VideoController videoController;
public GameObject player;
public float radius = 5f;
private bool isPlayerInRange = false;
private Button button;
private void Start()
{
button = GetComponent<Button>();
button.onClick.AddListener(ToggleVideo);
}
private void Update()
{
if (isPlayerInRange)
{
button.gameObject.SetActive(true);
if (Input.GetKeyDown( KeyCode.Space ))
{
ToggleVideo();
}
}
else
{
button.gameObject.SetActive(false);
}
// Проверяем расстояние между игроком и кнопкой
float distance = Vector3.Distance(player.transform.position, transform.position);
if (distance <= radius)
{
isPlayerInRange = true;
}
else
{
isPlayerInRange = false;
}
}
public void ToggleVideo()
{
videoController.ToggleVideo();
}
}