【问题标题】:My script doesn't activate UI and doesn't play animations我的脚本没有激活 UI 也没有播放动画
【发布时间】:2021-05-21 04:00:12
【问题描述】:

大家好,我制作了两个脚本来处理开门问题。 脚本 1 - 光线投射 脚本 2 - 开门脚本

我在播放器相机上有光线投射,门上有脚本 2。

但是有一个问题。

在脚本 2 中,我有使 UI 处于活动状态和非活动状态的代码以及执行门动画的代码

脚本 1 -

using System.Collections.Generic;
using UnityEngine;

public class PlayerCasting : MonoBehaviour
{
    public Camera FPScam;
    public float range = 6;
    public static float ToTarget; 


    void Update()
    {
        RaycastHit Hit;
        if (Physics.Raycast(FPScam.transform.position, FPScam.transform.forward, out Hit, range))
        {
            ToTarget = Hit.distance;
        }
    }
}

脚本 2 -

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DoorOpen : MonoBehaviour
{

    public float Distance;
    public GameObject key;
    public GameObject reason;
    public GameObject Hinge;
    public AudioSource DoorCreak;
    
    

    // Update is called once per frame
    void Update()
    {
        Distance = PlayerCasting.ToTarget;
    }

    private void OnMouseOver()
    {
        if (Distance <= 3.5f)
        {
            key.SetActive(true);
            reason.SetActive(true);
        }
        if (Input.GetButtonDown("Action"))
        {
            if (Distance <= 3.5f)
            {
                key.SetActive(false);
                reason.SetActive(false);
                this.GetComponent<BoxCollider>().enabled = false;
                Hinge.GetComponent<Animation>().Play("DoorOpenAnim");
                DoorCreak.Play();
            }
        }

    }

    private void OnMouseExit()
    {
        key.SetActive(false);
        reason.SetActive(false);
    }
}

但是,当我点击“E”时,当 Raycast 距离

【问题讨论】:

    标签: c# unity3d game-engine


    【解决方案1】:

    我在播放器相机上有光线投射

    由于您使用的是OnMouseOver()OnMouseExit(),因此您的方法仅在玩家的鼠标位于您要投射的物体上时才有效。

    确保光线投射实际上指向鼠标光标所在的方向。您可以使用 Debug.Raycast() 直观地查看光线投射的去向。

    如果光线投射正朝着您想要的方向前进,但仍然无法正常工作,请尝试通过脚本进行不同的通信方式,并避免使用 OnMouseOver()

    例如,你可以尝试这样的事情:

    public class PlayerCasting : MonoBehaviour
    {
        public Camera FPScam;
        public float range = 6;
        public static float ToTarget = 0f;
        public static GameObject HoveredObject = null; // <----
    
        void Update()
        {
            RaycastHit Hit;
            if (Physics.Raycast(FPScam.transform.position, FPScam.transform.forward, out Hit, range))
            {
                ToTarget = Hit.distance;
                HoveredObject = Hit.collider.gameObject; // <----
            }
        }
    }
    public class DoorOpen : MonoBehaviour
    {
    
        public float Distance;
        public GameObject key;
        public GameObject reason;
        public GameObject Hinge;
        public AudioSource DoorCreak;
    
    
    
        // Update is called once per frame
        void Update()
        {
            if (PlayerCasting.HoveredObject == gameObject)
            {
                Distance = PlayerCasting.ToTarget;
    
                CheckDistance();
            }
    
        }
    
        private void CheckDistance()
        {
            if (Distance <= 3.5f)
            {
                key.SetActive(true);
                reason.SetActive(true);
    
                if (Input.GetButtonDown("Action"))
                {
                    key.SetActive(false);
                    reason.SetActive(false);
                    this.GetComponent<BoxCollider>().enabled = false;
                    Hinge.GetComponent<Animation>().Play("DoorOpenAnim");
                    DoorCreak.Play();
                }
            }
            else
            {
                key.SetActive(false);
                reason.SetActive(false);
            }
    
    
        }
    
        private void OnMouseExit()
        {
            key.SetActive(false);
            reason.SetActive(false);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-06
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多