网站设计公司天津,开发软件属于什么行业,企业网站设计wordpress,wordpress新淘客不知道大家有没有玩过红色警戒 —— 一款即时战略游戏#xff0c;和罪恶都市一样小编小学的时候就开始玩了#xff0c;这款游戏控制单位角色移动是通过鼠标的点击来实现。 同样的操作方法还有英雄联盟等很多游戏#xff0c;那本篇文章小编就通过简单小实例来讲解这种操作在U…不知道大家有没有玩过红色警戒 —— 一款即时战略游戏和罪恶都市一样小编小学的时候就开始玩了这款游戏控制单位角色移动是通过鼠标的点击来实现。 同样的操作方法还有英雄联盟等很多游戏那本篇文章小编就通过简单小实例来讲解这种操作在Unity中是如何实现的。 小编先展示一下实例的演示动图红色球体表示我们控制的角色鼠标左键点击小球就会到相应的坐标位置并打印坐标。 一、原理
先来讲一下这种操作方式的原理它其实是从摄像机发射出的一条射线。当鼠标点击的时候射线就从摄像机发射打到你点击的位置通过检测射线获取到位置坐标角色就向这个坐标移动。 注射线发射后碰到的游戏物体必须要有碰撞组件才会被检测到演示动图中点击平面区域以外的地方是没有任何反应的。 二、实现实例
创建射线的两种方法该实例是通过摄像机创建射线
//创建射线的两种方法
//方式一 通过向量创建
Ray ray1 new Ray(Vector3.zero , Vector3.up);
//方式二 通过摄像机创建
Ray ray2 Camera.main.ScreenPointToRay(Input.mousePosition);
新建一个平面一个球体球体挂载上红色的材质方便我们观察新建RayTest脚本用来检测射线并挂载到球体上。
public class RayTest : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){//当点击鼠标左键时执行if(Input.GetMouseButtonDown(0)){//按下鼠标左键发射射线 射线发射后碰到的游戏物体必须要有碰撞组件才会被检测到Ray ray Camera.main.ScreenPointToRay(Input.mousePosition);//声明一个碰撞信息类RaycastHit hit;//碰撞检测用布尔类型表示bool res Physics.Raycast(ray,out hit);//如果碰撞到的情况下hit就有内容了if (res true){//打印出碰撞信息的坐标Debug.Log(hit.point);//把坐标赋值给球体球体位置就会直接闪现到射线检测点transform.position hit.point;}//多检测//RaycastHit[] hits Physics.RaycastAll(ray, 100, 1 10);}}
}
点击运行就是动图的演示效果了很简单的一个实例拜拜┏(0)┛