Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符选择屏幕的冲突检测问题_C#_Unity3d - Fatal编程技术网

C# 字符选择屏幕的冲突检测问题

C# 字符选择屏幕的冲突检测问题,c#,unity3d,C#,Unity3d,我正在尝试制作一个类似于超级粉碎兄弟的角色选择屏幕,并使用一个控制器,但我在这样做时遇到了麻烦。目前,这就是我努力实现这一目标的原因 if (Input.GetKeyDown(KeyCode.Joystick1Button1)) { RaycastHit rayInfo; Ray ray = Camera.main.ScreenPointToRay(transform.position); if (Physics.Raycast(ray,

我正在尝试制作一个类似于超级粉碎兄弟的角色选择屏幕,并使用一个控制器,但我在这样做时遇到了麻烦。目前,这就是我努力实现这一目标的原因

if (Input.GetKeyDown(KeyCode.Joystick1Button1))
    {
        RaycastHit rayInfo;
        Ray ray = Camera.main.ScreenPointToRay(transform.position);
        if (Physics.Raycast(ray, out rayInfo))
        {
            Debug.Log("raycast hit");
            rayInfo.collider.gameObject.SendMessage("Selected");
        }
    }

但是从我所知道的来看,我觉得光线投射似乎没有击中任何东西,因为debug.log从未运行过,尽管它直接位于我想要选择的图标/角色上。如何修复此问题并使其正常工作?

首先,用于执行光线碰撞的屏幕点是
transform.position
。除非此脚本附加到已经以某种方式跟随鼠标的游戏对象,否则您可能希望它成为鼠标位置

其次,您应该检查以确保您尝试光线投射到的对象上有一个碰撞器

第三,如果选择屏幕是2d,您可以通过以下操作:

Collider2D hitInfo =Physics2D.OverlapPoint(Camera.main.ScreenToWorldPoint(Input.mousePosition));
if (hitInfo.gameObject!=null){
//Do selection logic here.
}

我确实将这些脚本附加到游标对象,因为我是针对控制器而不是鼠标执行此操作的。我还尝试使用此代码对鼠标和控制器进行测试,但我发现它对控制器指针和transform.position不起作用。我只是简单地得到了空引用错误,当你点击任何东西时,即使使用鼠标也会出现这种错误