点击Q键可以移动画面。
点击W可以键选择的模块进行拖动
点击E 可以将你选中的模块进行旋转。
点击R可一件选中的模块进行放大或缩小。
Alt+左键可以围绕选中物体旋转。
滑轮可以进行拉近或拉远。
同时按Ctrl+Alt+鼠标右键的效果和滑轮一样。
用for循环创建一个(9*9)的模块组
一般方法
先创建一个空的模块,在创建一个C#Script 后将下列代码写入后保存。然后将其拖入到新建的模块中运行即可。
using UnityEngine;
using System.Collections;
public class CreateCubeScript : MonoBehaviour {
void Start()
{
for(int x=0;x<9;x++)
{
for(int y=0;y<9;y++)
{
GameObject g=GameObject.CreatePrimitive (PrimitiveType.Cube);
g.transform.localScale=new Vector3(0.8f,0.8f,0.8f);
g.transform.position=new Vector3(x,y,0);
}
}
}
}
预制件方法
首先要创建预制件。
先将你所要创建的预制件模块拖入到Hierarchy中再将Hierarchy中的模块拖回来再将Hierarchy中的模块删除。预制件制作完毕。
然后在创建一个空模块,在创建一个C#Script 后将下列代码写入后保存。
using UnityEngine;
using System.Collections;
public class CreateTeddy : MonoBehaviour {
public Transform g;
void Start()
{
for (int x = 0; x < 9; x++)
{
for (int y = 0; y < 9; y++)
{
g = (Transform)GameObject.Instantiate(g);
g.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);
g.position = new Vector3(x, y, 0);
}
}
}
}
动画效果
首先要创建一个动画播放器
Animator Controller
打开Animatr Controller 后将想要播放的动画效果添加到里面。
跳跃游戏的部分功能实现
创建四个文件夹非别为 Music Scenes Skyling Runner
先创建两个预制件SkylingCloseprefab SkylingFarawayprefab 分别一个颜色深一个颜色浅,将其放入Skyling中。
继续在Hierarchy中创建两个空的模块 SkylingCloseManager(近天际线) SkylingFarawayManager(远天际线)
在Skyling中创建C#Script 代码为
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class SkylineCloseScript : MonoBehaviour
{
public Transform prefab;
//放置预制件的容器。
public Vector3 startPosition;
//定义墙体的开始位置
Vector3 nextPosition;
//定义下一个墙体出现的位置
public int GameObjectsNumber;
//定义游戏中的墙体数
Queue<Transform> queueObjects;
//定义一个队列
public Vector3 minSize;
//定义墙体的最小Scale
public Vector3 maxSize;
//定义墙体的最大Scale
public float offSet;
//定义Cube在移动时X的大小和队列收个元素的x大小的差值。
void Start()
{
queueObjects = new Queue<Transform>(GameObjectsNumber);
//初始化队列
for (int i = 0; i < GameObjectsNumber; i++)
{
queueObjects.Enqueue((Transform)GameObject.Instantiate(prefab));
//将墙体添加到队列中去
}
nextPosition = startPosition;
//将初始位置给第一个墙体
for (int i = 0; i < GameObjectsNumber; i++)
{
Recycle();
}
}
void Update()
{
if (RunnerScript.distance - queueObjects.Peek().position.x >= offSet)
//如果Cube在移动时X的大小和队列收个元素的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, maxSize.z));
//随机该墙体的Scale的值
Transform o = queueObjects.Dequeue();
//移除旧的墙体并且返回一个未初始化的新墙体
Vector3 position = nextPosition;
//当前楼体的位置
position.x += scale.x * 0.5f;
//上次的位置再向右移动自己身长的一半
position.y += scale.y * 0.5f;
//由于墙体的坐标是按墙体的重心计算。所以将所有墙体都像上提高自身高度的一半,则他们就处在同一水平线上
o.localScale = scale;
o.position = position;
//将墙体的Scale和Postion赋值给墙体本身
nextPosition.x += scale.x;
//计算下一次墙体的水平位置即前几个墙体的长度和
queueObjects.Enqueue(o);
将新生成的墙体添加到队列中去
}
}
将上面的C#分别拖入到两个控模块 SkylingCloseManager SkylingFarawayManager中,并填写相应数据。
在创建一个Runner模块将摄像机啊放在其中。
再在Runner文件夹中创建C#Script其代码为
using UnityEngine;
using System.Collections;
public class RunnerScript : MonoBehaviour
{
public static float distance;
//定义一个可以在别的脚本调用的变量
void Update()
{
transform.Translate(5f * Time.deltaTime, 0, 0);
//一秒钟在x周方向上移动五个单位
distance = transform.position.x;
//将Cube的X轴的值赋给distance
}
}
保存后将其导入Runner模块中即可完成。