首页 文章

创建能力半径Unity C#

提问于
浏览
1

我正在开发一个统一游戏的能力系统,其中一些法术具有特定范围,我不太确定如何做到这一点,但这就是我想到的 .

  • 我需要某种不可见的球体,它的中心将是我的角色 .

  • 球体的半径将等于所选法术的范围 .

  • 我的法术正在施放在鼠标位置上,这意味着我将能够检查球体是否与鼠标发生碰撞 .

总体来说这个球体的想法对我来说似乎很好,因为稍后我将能够为它添加颜色,这样用户也可以看到该咒语的phsycal范围,如果他想要的话 . 但我看到一些问题:

  • 鼠标仅在2维x和y中移动,但是对于要检测的2D物体碰撞,该方法需要另一个2D对照,而球体是3D .
private void OnTriggerEnter2D(Collider2D other)
{

}
  • 我不知道如何让我们说500像素范围仍然相对于我的屏幕,因此这是球体的实际半径,因为当我看着x轴时,我的角色似乎没有移动很大的距离,它们只移动一点点,在x轴上制作半径为500的球体将是完全的灾难 .

正如我所说,我不知道如何做到这一点,我是团结的新手,我不知道如何实现我的想法,所以欢迎任何帮助或提示 .

1 回答

  • 2

    您需要在3D中投影鼠标才能进行碰撞检查 . (你可以想象你的鼠标在它前面拍摄一条线)你可以使用光线投射来做到这一点:

    RaycastHit hit; 
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
    if ( Physics.Raycast (ray,out hit,100.0f))
    {
         if(hit.collider == yourSphereCollider)
         {
             // the mouse was pointing at the sphere
         }
     }
    

    请注意,如果球体和鼠标之间存在另一个对撞机,则会检测到它 .

    您还可以使用相同的技术来确定应在何处显示效果

相关问题