博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Unity3D-鱼的方向 鱼的游动 控制代码》
阅读量:6378 次
发布时间:2019-06-23

本文共 1357 字,大约阅读时间需要 4 分钟。

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();
}
}
}

转载于:https://www.cnblogs.com/ylllove/p/7337723.html

你可能感兴趣的文章
C语言学习笔记(一)_hello world
查看>>
软件质量
查看>>
11-C语言循环结构(二)
查看>>
html清除浮动的6种方法
查看>>
搭建双塔
查看>>
Can't find variable: SockJS vue项目
查看>>
17 常用模块 tiime os sys 递归 序列化
查看>>
MyBatis(1)——快速入门
查看>>
Linux下安装Mysql
查看>>
openstack ocata版(脚本)计算节点安装
查看>>
JavaEE Tutorials (27) - Java EE的并发工具
查看>>
adb--monkey 压力测试工
查看>>
Socket编程详解
查看>>
Linux 技巧:让进程在后台可靠运行的几种方法
查看>>
WebView.简单使用_资料
查看>>
Natural Cycles避孕App精准计算受孕时间【APP推荐】
查看>>
解决IllegalStateException: Can not perform this action after onSaveInstanceState
查看>>
vdbench-自动化测试脚本
查看>>
CAN协议栈总体架构
查看>>
python下正则表达式的随笔记录
查看>>