初学unity(简单场景制作)
2016-01-20 00:01
513 查看
首先,新建立一个空白场景(纯英文路径)。
加入一个空的游戏物体,在其子目录创建两个子物体,取名Close和Far(利用这两个做游戏背景),将这两个游戏体拖入下方Assets中,作为预置体,补充相应的材质球来做出想要的颜色,然后添加一个C#脚本(命名为House)。
在Assets中,新建一个文件夹Runner作为移动的视角,添加一个C#脚本(命名为Run)。
打开House,编写代码
下边是Run的代码
然后将Close物体拖入到脚本中,并设置相应的参数
通过
可以比较视角与边界(出现在视角中较长时间)的物体移动到新的位置,即可创立出一种新的,类似于无限出现在视角中的“假象”。
最终成像
其中,随着视角的移动,物体会不停的显示,造成“无尽背景的显示”
备注:
1.创立脚本时立即更改名字,当确定后在更改名字,要将脚本中的声明一同更改。
2.拖预置件到脚本的公用变量时,若后边更改了该变量,要重新拖预制件到脚本当中
3.Localposition和Position的区别:
Position:在unity世界中的坐标
Localposition:子物体相对于父物体的坐标,若没有父物体,则默认以unity世界作为父物体
欢迎关注我的微信个人订阅号
每天多学一点0.0
加入一个空的游戏物体,在其子目录创建两个子物体,取名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
相关文章推荐
- 编写Unity3D着色器的三种方式
- 关于Unity中的_MainTex_ST的一些疑惑
- 初学unity3D—20160119
- UNITY学习的第二天总结
- 【Unity3D自学记录】鼠标移动三维物体
- unity基础开发 1. 射线&碰撞器的原理和用法
- 使用MonoDevelop调试Unity3D的正确步骤
- Unity炮弹拖尾和弓箭的抛物运动方法
- Unity3D的四种坐标系
- Unity 3D中的 SetActive() 与 OnEnable()、OnDisable()要注意的
- unity中刷路点
- 【小松教你手游开发】【unity实用技能】Unity3D_NGUI_性能优化实践_CPU卡顿
- 如何让Maya中的相机和Unity相机的FOV(Angle of View)对上
- 【小松教你手游开发】【unity实用技能】Unity3D中Assetbundle技术使用心得
- Unity3d 开发(七)AssetBundle组织目录
- Unity学习日记-使用脚本进行音频资源的读取,Resources.LoadAll
- unity, GUI.Button texture is black
- unity3d 简单的xml文件读写操作
- unity5.0新功能-布料、动画系统
- Unity C#多态