点击Q键:抓图,平移场景。Alt+左键,围绕Cube观察,Alt+右键,放大缩小,直接点左键向着周围看,随意看,
点T键:改变模块对象的大小尺寸。
用代码创建9*9个Cube.,代码必须注意大小写
{
for(int x=0;x<9;x++)
{
for (int y = 0; y < 9;y++ )
{
GameObjectg = GameObject.CreatePrimitive(PrimitiveType.Cube);
g.transform.position = new Vector3(x,y,0);
g.transform.localScale=new Vector3(0.8f,0.8f,0.8f);
}
}
}
}
运用预制件创造9*9个小熊,
将小熊的图片模型拖进Unity,Assect文件下,再把小熊拖进左边的框中,再拖进Assect栏中,形成预制件,
动画:Create 一个Animation.把动画拖进主屏框中,
代码:
public Transform g; //全局变量,代表预制件,小熊,,,和预制件中的 G 栏目相对应。
void Start()
{
for (int x=0;x<9 ;x++ )
{
for(int y = 0; y < 9;y++ )
{
Transforma = (Transform)GameObject.Instantiate(g); //游戏体对象类型的转换
g.transform.position = new Vector3(x,y,0);
g.transform.localScale = new Vector3(0.8f,0.8f,0.8f);
}
}
}
CreateObject 2个,,分别代表近的天空线,另一个代表远的天空线,在把这两个Object创建成预制件,名为SkyCloseline,SkyFarawayline。在Asset里面建4个Folder:Runner,,Skyline,Scene,。。。。把,SkyCloseline,SkyFarawayline预制件放进,Skyline中并创建一个名为SkyFarawaylineprefab,,SkyCloselineprefab.再建一个SkyCloselineScript脚本。
using System.Collections.Generic;
public class SkyCloselineScript : MonoBehaviour
{
public Transform prefab;
//开始时的坐标
public Vector3 startPosition;
//下一个坐标
Vector3 nextPosition;
//游戏对象的数目,自定义输入
public int GameObjectsNumber;
//队列
Queue<Transform>queueObject;
//模块数目的最大,,最小的尺寸
public Vector3 minSize;
public Vector3 maxSize;
//
public float offSet;
void Start()
{
//队列初始化,存放墙体的书目,大小自定义输入
queueObject= new Queue<Transform>(GameObjectsNumber);
for(int i=0;i<GameObjectsNumber;i++)
{
queueObject.Enqueue((Transform)GameObject.Instantiate(prefab));
}
//开始的坐标传给下一个坐标
nextPosition = startPosition;
for(int i=0;i<GameObjectsNumber;i++)
{
Recycle();
}
}
//返回队列首部的元素,
void Update()
{
if(RunnerScript.distance-queueObject.Peek ().position.x>=offSet)
{
Recycle();
}
}
//把队首的元素移至队尾,的方法,,,需要中间变量传递参数值
private void Recycle ()
{
//随机生成墙体模块
Vector3 scale = new Vector3 (Random.Range (minSize.x,maxSize.x),Random.Range (minSize.y,maxSize.y),Random.Range(minSize.z,minSize.z));
//移除队首的墙存入o
Transform o = queueObject.Dequeue();
//
Vector3 position = nextPosition;
//计算后移的坐标距离
position.x += scale.x * 0.5f;
position.y += scale.y * 0.5f;
//随机生成的墙体大小赋给o
o.localScale = scale;
//后移的坐标赋给0
o.position = position;
nextPosition.x += scale.x;
//把o 放到队尾
queueObject.Enqueue(o);
}
}