U3D物体间自动寻路,触发碰撞代码
//圆球自动获取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
不错。{:5_435:}{:5_435:}{:5_435:}{:5_435:}
不错 不错 不错{:soso__3922851084632044791_6:}
不错 不错 不错{:soso__3922851084632044791_6:} {:5_408:}{:5_408:}{:5_408:}
不错 不错 不错{:soso__3922851084632044791_6:} {:5_401:}{:5_399:}{:5_424:} 学习学习{:soso_e179:} 谢谢lz分享{:soso_e152:}
感谢楼主的无私分享!{:soso__11402694654016840197_7:}