Unity鱼随机游动的实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class mtf : MonoBehaviour
{
public static Vector2 lt=new Vector2(282,300), rb=new Vector2(382,181);
Vector3 flag;
bool has;
public float speed = 5;
public static float rot = 3;
Vector3 tmp;
void Start()
{
speed = Random.Range(4, 15);
has = false;
while (true)
{
flag = new Vector3(Random.Range(lt.x, rb.x), transform.position.y,
Random.Range(lt.y, rb.y));
if ((flag - transform.position).magnitude > 20)
break;
}
}
void Update()
{
tmp = flag - transform.position;
if (!has && tmp.magnitude < 0.5f)
{
speed = Random.Range(4, 15);
while (true)
{
flag = new Vector3(Random.Range(lt.x, rb.x), transform.position.y,
Random.Range(lt.y, rb.y));
if ((flag - transform.position).magnitude > 20)
break;
}
}
else if (has && tmp.magnitude < 0.1f)
Destroy(gameObject);
if (!has)
{
float angle = Vector3.Angle(transform.forward, tmp);
tmp = Vector3.Cross(transform.forward, tmp);
float turn = tmp.y >= 0 ? 1f : -1f;
transform.Rotate(transform.up, angle * Time.deltaTime * rot * turn,
Space.World);
}
transform.Translate(Vector3.forward * Time.deltaTime * speed);
}
public void setfoodpos(Vector3 pos)
{
has = true;
speed = 1;
flag = pos;
transform.LookAt(flag);
}
}