物体上没有凹凸

问题描述 投票:0回答:1

我不是 Unity 专业人士,而是开始制作我的第一个 2D 游戏。 在此脚本中,从该点向光标释放一条射线,如果它击中钩子,则会创建绳子的一部分。

using UnityEngine;

public class ThrowRope : MonoBehaviour
{
    [SerializeField] private GameObject _hook;
    [SerializeField] private GameObject _unitRopePref;
    [SerializeField] private Transform _player;



    void Update()
    {
        if (Button.nuberPerson == 2)
        {

            if (Cursorrender.cursRopeMode)
            {

                Ray ray = new Ray(transform.position, transform.forward);
                RaycastHit hit;
                Debug.DrawRay(ray.origin, ray.direction * 100, Color.red);
                if (Input.GetMouseButtonUp(0))
                {
                    Debug.Log("CLICK");
                    if (Physics.Raycast(ray, out hit))
                    {
                        Debug.Log("HIT");
                        if (hit.distance <= 200 && hit.collider.gameObject == _hook)
                        {
                            Debug.Log("INSTANTIATE");
                            Instantiate(_unitRopePref, hit.transform);
                        }
                    }
                }
            }

        }
    }
}

但是打开游戏并按下鼠标键后,即使光线应该击中物体,代码也只会到达 CLICK 消息。

c# unity-game-engine unityscript
1个回答
0
投票

如果假设光线到达光标(从相机的角度),请从观察相机使用 ScreenPointToRay。

if (Input.GetMouseButtonUp(0))
{
    var ray = Camera.main.ScreenPointToRay(Input.mousePosition);

    if (Physics.Raycast(ray, out var hit))
    {
        Debug.Log($"Hit {hit.collider.name}");
    }
}

您可以将

Camera.main
替换为对您相机的引用,或者根据需要缓存主相机(微优化)。

© www.soinside.com 2019 - 2024. All rights reserved.