1.在项目中创建一个摄像机和一个作为准心的节点
2.脚本
public Camera mainCamera; // 主相机
public GameObject crosshair; // 准心对象
private void Update()
{
Vector3 screenPoint = mainCamera.WorldToScreenPoint(crosshair.transform.position);//如果准心实在空间内就需要将其世界坐标转为屏幕坐标,如果准心实在canvas就不需要该行代码。
RaycastHit hit;
Ray ray = mainCamera.ScreenPointToRay(screenPoint);
// Ray ray = mainCamera.ScreenPointToRay(crosshair.transform.position);//如果准心在canvas上就改为该行代码
if (Physics.Raycast(ray, out hit))
{
// 检测到了物体
if (hit.collider.CompareTag("Enemyship"))
{
Debug.DrawRay(ray.origin, ray.direction * hit.distance, Color.red); // 绘制红色射线
}
else
{
Debug.DrawRay(ray.origin, ray.direction * hit.distance, Color.green); // 绘制绿色射线
}
}
else
{
// 没有击中任何物体
// Debug.Log("未对准任何物体");
Debug.DrawRay(ray.origin, ray.direction * 1000f, Color.blue); // 绘制蓝色射线,长度设置为1000f
}
}
3.将以上脚本挂在到摄像机上,或者两者的父节点上。
将摄像机和准心拖入。就可以了。
以上为个人项目中的总结,如有问题可以评论中沟通。