编写脚本名为 Touch,该脚本功能可扩展,如添加与鼠标点击物体有关的相关事件:
using System.Collections; using System.Collections.Generic; using UnityEngine; ////// 射线检测生成新物体 /// public class Touch : MonoBehaviour { public GameObject prefab; private void Update() { if (Input.GetMouseButtonDown(0)) { //常用方法:利用摄像机和屏幕上的点,可以确定一条从手指到场景内的射线 var ray = Camera.main.ScreenPointToRay(Input.mousePosition); //常用方法:用物理引擎发射这条射线,如果碰到物体返回true RaycastHit hit; if (Physics.Raycast(ray, out hit)) { //如果成功碰到物体,则碰撞信息保存在 hit 中 //hit.point 代表碰撞点的位置 Instantiate(prefab, hit.point, Quaternion.identity);//在碰撞点生成预制件 //Debug.Log(hit.name); } } } }
将改脚本挂载到主相机上,并为主相机添加Physics Racaster组件:
将要生成的预制件拖入Touch脚本的Prefab中,此处我拖入的为一个 Cube:
发出的射线碰到带有碰撞体的物体才会反射,故场景中需要有带有碰撞体组件的物体。
在Hierarchy面板中新建一个平面 Plane(默认带有碰撞体),然后运行,点击平面一处位置,在鼠标点击处,就会生成新物体(预制件):
结束!



