Unity3d鼠标控制角色移动脚本问题

使用?UnityEngine

使用?系统。收藏;

公共?班级?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

}

}

}