一、射线检测
如何让鼠标点击某个位置,游戏角色就能移动到该位置?
实现的原理分析:我们能看见游戏的东西就是摄像机拍摄到的东西,所以摄像机的镜平面就是当前能看到的了。
那接下来我们可以让摄像机发射一条射线,鼠标点击哪个位置就打在哪个位置,这样就可以通过射线来获取点击的位置。
创建射线的方式
Ray ray = new Ray(Vector3.zero, Vector3.up);
第一个参数:origin(起始点): 射线的起始点,即射线从哪个点开始。在这个例子中,Vector3.zero 表示射线的起始点是三维空间中的原点 (0, 0, 0)。
第二个参数:direction(方向): 射线的方向,即射线沿着哪个方向延伸。在这个例子中,Vector3.up 表示射线向上延伸。
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
参数表示:Input.mousePosition 表示当前鼠标的屏幕坐标,ScreenPointToRay 将这个屏幕坐标转换为一条从摄像机位置发射的射线。
现在来实现获取到鼠标点击的坐标
void Update()
{
//方式2
if (UnityEngine.Input.GetMouseButtonDown(0))
{
//按下鼠标左键发射射线
Ray ray = Camera.main.ScreenPointToRay(UnityEngine.Input.mousePosition);
// 声明一个碰撞信息类,被点击的游戏物体上必须有碰撞器存在。
RaycastHit hit;
//碰撞检测
bool res = Physics.Raycast(ray, out hit);
//如果碰撞到的情况下,hit就有内容了
if (res == true)
{
Debug.Log(hit.point);
transform.position = hit.point;
}
}
}
这样就实现了鼠标点击哪个位置就移动到哪个位置。
二、粒子系统
Unity中的粒子系统是一种强大的工具,用于模拟和渲染大量的小粒子,如火花、烟雾、雨滴等效果。
创建方式:右键→新建→效果→粒子系统。
1.粒子系统的基本组成部分:
Emitter(发射器)︰定义了粒子的发射方式,包括发射速度、方向、形状等。一个粒子系统可以有多个发射器。
Particle(粒子)︰粒子是粒子系统中的基本元素,它们在场景中移动和改变外观。每个粒子都有自己的寿命、颜色、大小等属性。
Module(模块)︰模块是粒子系统的可配置部分,用于定义粒子的各种属性和行为
2.Unity粒子系统的常用模块:
发射器模块(Emitter Module):控制粒子的发射方式,包括发射速度、方向、形状等。
主模块(Main Module) :定义了整个粒子系统的主要属性,如开始速度、开始颜色、生命周期等。
颜色过渡模块(Color over Lifetime Module) :控制粒子的颜色随时间变化。
大小过渡模块(Size over Lifetime Module) :控制粒子的大小随时间变化。
速度过渡模块(Velocity over Lifetime Module) :控制粒子的速度随时间变化。
旋转过渡模块((Rotation over Lifetime Module) :控制粒子的旋转随时间变化。
外部力模块(External Forces Module) :允许外部力对粒子系统产生影响,如风力重力等。
示例:做一个火焰效果。
将渲染器的材质改为火焰
将起始生命周期改为1.
将随单位时间产生的粒子数改为50
将形状中的角度修改为0,半径改为0.1。
将生命周期内大小改为从大到小。
将生命周期内颜色改为最开始改为红色末尾改为黄色。
最后效果: