В настоящее время я борюсь с радиовещанием.
Я создал алгоритм, подобный прицелиться в дверь -> кнопка UI включена -> нажать кнопку -> дверь открыта
Это отлично сработало на моей первой двери. Но внезапно кнопка не была включена.
Я использовал debug.drawray и обнаружил, что лучевая передача работает отлично.
Так что я попытался скопировать все вещи и создал новую сцену с ним.
Тогда кнопка снова была включена идеально!
Настоящая проблема в том, что я сделал вторую дверь и создал сценарий так же, как и первый, а кнопки не работают !!
Точно так же, как первый неожиданно… Я проверил свой raycast, используя debug.drawray, и он работал отлично.
Я действительно устал от радиовещания, слишком глючного. Я не хочу копировать все свои вещи и делать новую сцену как навсегда.
Пожалуйста, помогите мне, ребята. Кстати извините за мой плохой английский sh. Спасибо всем!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Door1FR : MonoBehaviour
{
public DataController dc;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Ray ray = new Ray();
ray.origin = dc.FPScam.transform.position;
ray.direction = dc.FPScam.transform.TransformDirection(Vector3.forward);
RaycastHit hit;
if(Physics.Raycast(ray.origin, ray.direction, out hit, 3.0f))
{
if(hit.collider.gameObject.name == "EntranceDoor1FR")
{
Debug.DrawRay(ray.origin, ray.direction, Color.green);
dc.Interactbut.enabled = true;
dc.Interactbut.image.enabled = true;
dc.Interactbut.image.sprite = dc.interactimg;
}
else if (hit.collider.gameObject.name == "Room1Door1FR")
{
dc.Interactbut.enabled = true;
dc.Interactbut.image.enabled = true;
dc.Interactbut.image.sprite = dc.interactimg;
}
else if (hit.collider.gameObject.name == "Room2Door1FR")
{
dc.Interactbut.enabled = true;
dc.Interactbut.image.enabled = true;
dc.Interactbut.image.sprite = dc.interactimg;
}
else if (hit.collider.gameObject.name == "BathRoomDoor1FR")
{
dc.Interactbut.enabled = true;
dc.Interactbut.image.enabled = true;
dc.Interactbut.image.sprite = dc.interactimg;
}
else
{
dc.Interactbut.enabled = false;
dc.Interactbut.image.enabled = false;
}
}
}