using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RayToScreenMid : MonoBehaviour
{// 从视角摄像机向屏幕中间发射射线
Camera MianCamera; // 这是一个摄像机对象
Vector3 ScreenMidPos; // 这是屏幕中央的点的坐标
private void Start()
{
ScreenMidPos = new Vector3(Screen.width / 2, Screen.height / 2, 0); // 初始化屏幕中央的点的坐标
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
RayShot(); // 如果鼠标左键按下,则发射一条射线
}
}
private void RayShot()
{
//从摄像机出发向屏幕中间发射射线!
Ray OneShotRay = Camera.main.ScreenPointToRay(ScreenMidPos); // 以屏幕中央点为原点,发射射线
RaycastHit OnEnemy;
if (Physics.Raycast(OneShotRay, out OnEnemy)) // 如果射线碰到了物体
{
Debug.Log("射线发射成功");
if (OnEnemy.transform.name != "Terrain" && OnEnemy.transform.name != "Role") // 如果碰到的不是地形和角色
{
Destroy(OnEnemy.transform.gameObject); // 销毁碰撞到的物体
Debug.Log("销毁对方");
if (ScreenMidPos != null)
{
Debug.DrawLine(Camera.main.transform.position, ScreenMidPos, Color.red, 10000f); // 画一条从摄像机出发,到屏幕中央点的射线
}
}
}
}
}
这个代码的作用是画一条射线并发射到屏幕中间,点击鼠标左键即销毁在屏幕中央除主人物、摄像机、地面的物体

1万+

被折叠的 条评论
为什么被折叠?



