|
本帖最后由 摞你命3000 于 2014-12-8 16:38 编辑
我碰到一个问题,就是当我的角色残血低于50会自动跑向加血点,跑到加血点后,加血成功,然后它一直在那不停转圈圈。。。。。
有没有人大神帮忙解决一下,这什么问题?
代码如下:
using UnityEngine;
using System.Collections;
public class pz : MonoBehaviour {
public Transform target;//加血点坐标
public GameObject boomFire;//定义一个boomFIRE的变量 场景中物体 也可以是预制物体,我这里定义的是我预制物体里的一个炸弹爆炸的效果
public Transform target_start;//初始点坐标
void Start ()
{
//动画为循环播放
this.animation.wrapMode = WrapMode.Loop;
}
void Update ()
{
if (GetComponentInChildren<xueliang> ().dangqianHP <= 500) { //低于500生命值的时候自动跑去加血点
gameObject.animation.Play ("run");
this.transform.LookAt (target.transform);//朝向加血点
transform.Translate (Vector3.forward * Time.deltaTime * 5);
if (Vector3.Distance (this.transform.position, target.transform.position) <= 5) { 到达加血点距离小于5
gameObject.animation.Play ("idle"); //播放动画站立
}
}
}//update结束符号
protected void OnCollisionEnter(Collision collision){//碰撞检测函数
if (collision.collider.tag == "paodan") {//当检测到碰撞物体的tag(标签)是paodan的时候,这个标签要在预制物体或者场景里的物体的标签先定义一下。
if (GetComponentInChildren<xueliang> ().dangqianHP > 0) {
//(获取父物体对象下的所有子对象的脚本或组件,这里我要找到xueliang脚本中的变量dangqianHP),如果获取到的当前血量的值大于0时,
GetComponentInChildren<xueliang> ().dangqianHP -= 100;//那么就减去100的血量,碰撞一次减100的血量的意思。
}
if (GetComponentInChildren<xueliang> ().dangqianHP <= 0) {//如果小于零或者等于零
Instantiate (boomFire, this.transform.position, this.transform.rotation); //那么就执行爆炸效果在碰撞的当前位置
Destroy (gameObject);
}
}
}
}
=======================截图
就是好像它没有到达指定的地点那样 。。。。原地倒下然后沿着x 或者Y轴不停的诡异旋转。。。。
角色身上有钢铁和碰撞器
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|