您的位置:首页 > 移动开发 > Unity3D

初学unity(简单场景制作)

2016-01-20 00:01 513 查看
首先,新建立一个空白场景(纯英文路径)。

加入一个空的游戏物体,在其子目录创建两个子物体,取名Close和Far(利用这两个做游戏背景),将这两个游戏体拖入下方Assets中,作为预置体,补充相应的材质球来做出想要的颜色,然后添加一个C#脚本(命名为House)。



在Assets中,新建一个文件夹Runner作为移动的视角,添加一个C#脚本(命名为Run)。





打开House,编写代码

using UnityEngine;
using System.Collections;
using System.Collections.Generic;//为了使用Queue

public class House : MonoBehaviour {

public Transform g;//公有,为了加入Cube
//私有,代码内部建立,为了重复建立Cube
Queue<Transform> queueObject;
public int queueLength;//设置queue长度
public Vector3 minSize;//设置物体最小体积
public Vector3 maxSize;//设置物体最大体积
public Vector3 startPosition;//设置开始坐标
Vector3 nextPosition;//下一个物体的坐标

public float offSet;//是否在物体后建立新物体的参考数值

// Use this for initialization
void Start () {
//初始化
queueObject = new Queue<Transform>(queueLength);
//将Cube循环加入到queue
for (int i = 0; i < queueLength; i++)
{
queueObject.Enqueue((Transform)GameObject.Instantiate(g));
}
//将初始数值付给下一步数值
nextPosition = startPosition;
for (int i = 0; i < queueLength; i++)
{
Resever();
}

}

private void Resever()
{
//取出queue的物体对其设置
Transform o = queueObject.Dequeue();
//通过随机数设置坐标
o.localScale = new Vector3(Random.Range(minSize.x,maxSize.x),Random.Range(minSize.y,maxSize.y),Random.Range(minSize.x,maxSize.z));
//中间变量
Vector3 mid = nextPosition;
//取x方向一半大小将其累加在mid中
mid.x += o.localScale.x / 2;
//使物体在同一水平面
mid.y += o.localScale.y / 2;
//物体坐标初始化
o.localPosition = mid;
//将物体的在x方向的大小累加在nextPosition的x上上
nextPosition.x += o.localScale.x;
//将其加入到queue的末尾
queueObject.Enqueue(o);
}

// Update is called once per frame
void Update () {
//比较其数值大小,是否新建立后边的场景
if (Run.dis - queueObject.Peek().localPosition.x >= offSet)
{
Resever();
}
}
}


下边是Run的代码

//定义静态值,不会再unity界面显示
public static float dis;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
//设置移动速度
transform.Translate(5f * Time.deltaTime, 0, 0);
//将视角坐标赋给dis
dis = transform.position.x;
}


然后将Close物体拖入到脚本中,并设置相应的参数



通过

if (Run.dis - queueObject.Peek().localPosition.x >= offSet)


可以比较视角与边界(出现在视角中较长时间)的物体移动到新的位置,即可创立出一种新的,类似于无限出现在视角中的“假象”。

最终成像



其中,随着视角的移动,物体会不停的显示,造成“无尽背景的显示”

备注:

1.创立脚本时立即更改名字,当确定后在更改名字,要将脚本中的声明一同更改。

2.拖预置件到脚本的公用变量时,若后边更改了该变量,要重新拖预制件到脚本当中

3.Localposition和Position的区别:

Position:在unity世界中的坐标

Localposition:子物体相对于父物体的坐标,若没有父物体,则默认以unity世界作为父物体

欢迎关注我的微信个人订阅号



每天多学一点0.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: