///注明:需要特效动画
using
UnityEngine;
///
<summary>
///
鼠标点击位置实例化点击特效-RPG游戏常用,位于player
///
</summary>
public
class
PlayerDir
:
MonoBehaviour
{
///
<summary>
///
鼠标点击特效预制体
///
</summary>
public
GameObject
effectClickPrefab;
void
Update()
{
//调用鼠标点击地面特效
PlayerDirectional();
}
///
<summary>
///
射线检测
///
</summary>
void
PlayerDirectional()
{
//检测鼠标是否按下
if
(
Input
.GetMouseButtonDown(1))
{
//判断当前是否点击到了地面
//定义主摄像机发射一条射线,进行检测
Ray
ray =
Camera
.main.ScreenPointToRay(
Input
.mousePosition);
//定义精测碰撞
RaycastHit
hitInfo;
//Bool判断当前是否检测碰撞到了游戏对象
bool
isCollider =
Physics
.Raycast(ray,
out
hitInfo);
//如果当前射线检测碰撞到了游戏对象并且是地面
if
(isCollider && hitInfo.collider.tag ==
"BoxColliderGround"
)
{
//实例化出来点击的效果,调用ShowClickEffect方法
ShowClickEffect(hitInfo.point);
}
}
}
///
<summary>
///
在鼠标点击的位置实例化鼠标特效
///
</summary>
///
<param name="
hitPoint
">
检测碰撞到的位置信息
</param>
void
ShowClickEffect(
Vector3
hitPoint)
{
//实例化鼠标点击特效,位置是当前鼠标检测碰撞到的位置
GameObject
currentObj = Instantiate(effectClickPrefab, hitPoint,
Quaternion
.identity)
as
GameObject
;
//定时销毁当前实例化的鼠标点击特效
Destroy(currentObj, 0.3f);
}
}