《Unity3D-鱼的方向 鱼的游动 控制代码》

时间:2022-07-01 20:01:06

public class fishGame : MonoBehaviour {

enum FishDir //设置朝向的枚举
{
left,
right
}
FishDir dir; //申明一个方向控制鱼
Vector3 target; //申明目标变量
public float speed = 2; //设置鱼的速度

// Use this for initialization
void Start () {
float random = Random.value; //随机设置鱼的方向
while (random==0.5f) //循环判断random直到整个数字不等于0.5
{
random = Random.value;
}
if (random>0.5f) //如果随机数大于0.5的情况和小于的情况
{
dir = FishDir.left;
}
else
{
dir = FishDir.right;
}
ChangeDir(); //调用改变方向的方法
SetTarget(); //调用设置目标的方法
}

// Update is called once per frame
void Update () {
Move();
}

void ChangeDir()
{
Vector3 scale = transform.localScale; //设置scale变量
if (dir == FishDir.left) //判断如果鱼儿的方向朝左时设置鱼儿的scale=1
{
scale.x = 1;
}
else
{
scale.x = -1;
}
transform.localScale = scale; //重新赋值
}

void SetTarget() //设置目标的方法
{
float x = dir == FishDir.left ? -0.2f : 1.2f; //使用判断左右的方法为x的值赋值0或者1;
Vector3 viewPoint = new Vector3(x, Random.value,-Camera.main.transform.position.z); //生成一个点的位置坐标信息 不过他的这些信息只调用一次
target = Camera.main.ViewportToWorldPoint(viewPoint); //在世界坐标系中去实例化一个目标点
}

void Move() //设置移动的方法
{
transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
if (Vector3.Distance(transform.position, target) == 0) //判断鱼是否到达边界位置
{
dir = dir == FishDir.left ? FishDir.right : FishDir.left; //控制鱼取得相反的方向
ChangeDir();
SetTarget();
}
}
}