//圆球自动获取Cube的位置,旋转角度面向Cube,计算距离(发生碰撞)
//男孩2号自动获取男孩1号的位置,旋转角度始终面向1号,距离大于2时:冲向1号,小于2时:踢腿
- var Enemy_ :GameObject;//圆球物体
- var attackRange = 200.0;//碰撞发生的范围
- var target:Transform;//位置 旋转角度
复制代码- function Update () {
- //Enemy_ = GameObject.Find("Sphere");
- if(target == null){
- return;
- }
-
复制代码
//在碰撞距离之外 圆球旋转并面向目标
- var targetPoint = target.position;
复制代码
/*function LookRotation (forward : Vector3, upwards : Vector3 = Vector3.up) : void
创建一个旋转,沿着forward(z轴)并且头部沿着upwards(y轴)的约束注视。也就是建立一个旋转,使z轴朝向view y轴朝向up。*/
- var targetRotation = Quaternion.LookRotation(targetPoint - Enemy_.transform.position,Vector3.up);
复制代码 /*static function Lerp (from : Quaternion, to : Quaternion, t : float) : Quaternion
通过t值from向to之间插值,并且规范化结果。
在from和to之间插值旋转(from和to不能与附加脚本的物体相同) 也就是说男孩2号的目光所示方向与1号所示方向连接成对角线,2号的目光从初始到对角线方向移动*/
- Enemy_.transform.rotation = Quaternion.Slerp(Enemy_.transform.rotation,targetRotation,Time.deltaTime*2.0);
复制代码
//距离小于200,满足碰撞条件
//获取2个男孩之间的距离,距离在2-200间时,男孩2号旋转注视1号,并且往1号位置所在移动;
//当距离小于2时,男孩2号做出踢腿动作
- var Distance_CS :float = Vector3.Distance(transform.position,target.position);
- if(Distance_CS < attackRange)
- {
- if(Distance_CS >2)
- {
- var targetPoint1 = target.position;//当前Cube位置
- Enemy_.transform.rotation = Quaternion.LookRotation(targetPoint1 - transform.position,Vector3.up);
- Enemy_.transform.Translate(Vector3.forward*0.05);
- Enemy_.animation.CrossFade("yaotou");
- }
- else if(Distance_CS <= 2)
- {
- Enemy_.animation.CrossFade("chutui");
- }
- }
- }
复制代码
如图所示:距离大于2
|