Unity raycasting слишком глючит - PullRequest
0 голосов
/ 13 апреля 2020


В настоящее время я борюсь с радиовещанием.
Я создал алгоритм, подобный прицелиться в дверь -> кнопка 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;
            }
        }
    }
...