某些游戏中存在准心用来瞄准物体,并可以点击交互,实现起来有2个关健点:
一是在屏幕中心添加准心,这个做起来很简单,只要把一张准心的图片Sprite放到MainCamera的子物体层级下,将其LocalPosition设置为(0,0,0.5)即可(这个坐标不绝对,大概在中心看得清楚即可),设置好后如下图所示
二是鼠标点击时,在准心的位置发射射线,通过射线碰撞来进行交互(物体需要添加碰撞体才能被射线检测到)
代码如下:
void Start()
{
Cursor.lockState = CursorLockMode.Locked;//锁定隐藏鼠标
transform.GetChild(0).localPosition = new Vector3(0, 0, 0.5f);//初始化准心位置在屏幕中心
}
void Update()
{
if (Input.GetMouseButtonUp(0))//当鼠标单机左键时
{
EmissionRay();//在屏幕中心发射射线
}
}
private void EmissionRay()
{
Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));//发射射线
RaycastHit raycasthit;
if (Physics.Raycast(ray, out raycasthit))//如果射线碰撞到物体
{
print(raycasthit.transform.name);//交互内容,此处是打印处对应的物体名
}
}