最新消息:

Unity 鼠标拣选

不论是 2D 游戏还是 3D 游戏,其映射给玩家的永远是一个 2D 平面,此时鼠标与游戏之间的交互就存在一个问题,即鼠标在 2D 屏幕中选择的点如何映射到 3D 游戏中?可以使用射线原理来解决此问题,以摄像机的位置为原点,以鼠标在屏幕中选择的当前点为目标点,发射一条射线,获取这条射线终点的三维坐标系即可。鼠标拣选原理的应用非常广泛,比如当玩家在地图中选择一个点时,人物会朝该点移动。本例将模拟完成鼠标拣选的过程。当鼠标在游戏地形中选择一个点后,系统就立即在该点创建一个立方体对象。此时需要用程序来检测该点是否处于游戏地形中,若否,则不创建立方体对象。处理鼠标事件的代码如下所示。

using UnityEngine;
using System.Collections;

public class CSharp : MonoBehaviour {
 void Update() {
 if(Input.GetMouseButtonDown(0)) {//点击鼠标左键后
 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //创建一条从摄像机到鼠标选择的当前点的射线
 RaycastHit hit;
 if (Physics.Raycast(ray, out hit)) {
 GameObject objCube = GameObject.CreatePrimitiv(PrimitiveType.Cube); //计算这条射线是否发射到地形中
 objCube.transform.position = hit.point; //确定选择的点为地形后,创建立方体对象
 }
 }
 }
}

当鼠标在 3D 游戏世界中选中一点时,系统会使用 Camera.main.ScreenPointToRay() 方法由摄像机的位置向鼠标选中时 3D 世界中的当前位置发射一条射线,然后使用 Physics.Raycast() 方法计算出该射线与地形相交点的位置,最后在该点创建一个立方体对象。

好了,Unity 鼠标拣选 就分享到这里,非常感谢你的来访。如果你喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!

转载请注明:爱维科斯 » Unity 鼠标拣选

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者