Unity3d鼠标控制角色移动脚本问题
使用?系统。收藏;
公共?班级?characterContrlAndMouseContrl?:?MonoBehaviour?{
公共?Vector3?魏徵;//用鼠标点击地图的位置。
公共?浮动?速度?= 2.0f//移动速度
公共?相机?camera 1;
//?使用?这个?为了什么?初始化
作废?开始?()?{
camera1?=?游戏对象。FindWithTag(“主摄像头”)。相机;
动画。玩?(“闲”);
魏徵?=?transform.position
动画[《奔跑》]。速度=速度;//
}
//?更新?是吗?叫什么?一次?per?设计
作废?更新?()?{
//用鼠标左键单击
如果?(输入。GetMouseButtonDown?(0))?{
粒子_实例?();//生成点击粒子
}
//转换。看看?(伊格诺雷(魏徵));
//转向
人物_zhuan?(this.gameObject,?魏徵);
//如果角色定位?比?鼠标在地图上点击哪里?距离大于?1
如果?(矢量3。距离?(ignoreY(transform.position),?伊格诺雷(魏徵)?& gt?1)?{
动画?【“跑”】。速度?=?速度* 0.3f//
动画。玩?(“跑”);
//移动角色
转变。Translate(Vector3.forward?*?时间。德尔塔时间?*?速度);
}?不然呢?{
动画。玩?(“闲”);
}
}
公共?游戏对象?粒子;?//鼠标点击位置的粒子
受保护?对象?particleClone = null?//鼠标点击位置的粒子克隆
//这个函数用来抵消矢量对Y轴的影响。比如主角的高度和点之间可能有距离,我们要忽略这个距离。
Vector3?ignoreY(Vector3?v3)
{
回归?新的?Vector3(v3.x,0,?v3 . z);
}
//字符转向功能,参数
作废?Character_zhuan(GameObject?gameobj,Vector3?Vpoint)
{
//主角的方位是下一个点坐标的向量减去主角坐标。
Vector3?方向?=?(ignoreY(Vpoint)?-?ignoreY(game obj . transform . position))。正常化;
//插值改变主角的朝向,使其有一个自然的转弯过程,防止其瞬间转弯。
gameobj.transform.forward?=?向量3。Lerp(gameobj.transform.forward,?方向,?0.1f);
}
///?& lt总结& gt
///命中生成粒子?
///?& lt/summary & gt;
作废?粒子实例()
{
雷。雷。=?camera1。ScreenPointToRay?(input . mouse position);
RaycastHit?打;
//当雷鹏转向物体时
如果?(物理。Raycast?(雷,?出局?打))?{
//检测粒子是否为空。
如果?(particleClone?!=?null)?{
游戏对象。毁灭?(particle clone);
particleClone?=?null
}
//粒子实例化
四元数?q1?=?新的?四元数?();
q1。SetLookRotation?(hit.normal,?向量3 . forward);
particleClone?=?实例化?(粒子,?击中。点,?q 1);
魏徵?= hit.point
}
}
}