给游戏物体挂上一个控制它运动的脚本
#region 关于运动的操作
//Random.insideUnitSphere * 10半径, 拿到结果z赋值为0,拿到圆形内1个随机点
public float speed ;
public Vector3 dir;//this.gameobject的运动方向
public int index;//记录随机点
private float time ;//定时器
public bool isWalk;//状态判断
void toStart()
{
speed = 1.5f;
dir = new Vector3(Random.Range(-10, 10), Random.Range(-10, 10), 0);//给游戏物体一个初始方向,让它去撞击边界触发器
//Anim = GetComponent<Animator>();
//Anim.Play("run");
time = 0;
isWalk = true;
}
void toUpdate()
{
time += Time.deltaTime;
if (time>3) //3秒改变一次状态,让游戏物体可以停停走走,不然很僵硬
{
ChangeState();
}
if (isWalk)
{
//运动: anim.play("run")
transform.localPosition += dir.normalized * speed * Time.deltaTime;
}
else
{
//停下来吃东西的状态
//Anim.Play("eat");
}
}
//更改行走 状态
void ChangeState()
{
int value = Random.Range(0, 2);
if (value ==0)// Stop
{
isWalk = false;
}
else
{
if (!isWalk)
{
dir =new Vector3(Random.Range(-10,10),Random.Range(-10,10),0);
}
isWalk = true;// Run
}
time = 0;//定时器 清零
}
private void OnTriggerEnter2D(Collider2D cc)
{
if (DentistMng1.instance._evn.isTouch)
{
if (cc.tag.Contains("Dentist_Wall"))//判断碰到某个 2d包围盒的tag
{
Debug.Log("碰到:"+ cc.name);
dir = -dir; //往反方向
}
}
}
#endregion