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不起作用。我只是简单地得到了空引用错误,当你点击任何东西时,即使使用鼠标也会出现这种错误