我正在开发一个统一游戏的能力系统,其中一些法术具有特定的范围,我不太确定如何做到这一点,但这就是我想到的。
我需要某种不可见的球体,它的中心将是我的角色。
球体的半径将等于所选法术的范围。
我的法术正在施放在鼠标位置上,这意味着我将能够检查球体是否与鼠标碰撞。
总体来说这个球体的想法对我来说似乎很好,因为稍后我将能够添加颜色,这样用户也可以看到该咒语的phsycal范围,如果他想要的话。但我发现了一些问题:
鼠标仅在二维x和y中移动,但是要检测到二维物体碰撞,该方法需要另一个二维合成器,球体为三维。
private void OnTriggerEnter2D(Collider2D other)
{
}
我不知道如何让我们说500像素范围仍然相对于我的屏幕,因此这是球体的实际半径,因为我的角色似乎不会移动很远的距离当我是看着x轴,它们只移动了一点点,在x轴上制作半径为500的球体将是完全的灾难。
正如我所说,我不知道如何做到这一点,我是团结的新手,我不知道如何实现我的想法,所以欢迎任何帮助或提示。
答案 0 :(得分: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
}
}
请注意,如果球体和鼠标之间存在另一个对撞机,则会检测到它。
您也可以使用相同的技术来确定应该在哪里显示效果