前言
最近学了Unity3d,通过触发器实现做了一个简单的3D版的2048。写篇文章记录一下
效果图
预制件如下:
场景图如下:
可以通过WSAD进行控制,通过碰撞实现
运行效果图如下
主要脚本
摄像机的脚本如下:
using UnityEngine;
using System.Collections;
public class game : MonoBehaviour {
public Transform[] shuzi;
private int length;
public int num;
public int[] map;
public Transform ro;
public bool zangting=false;
public int time=101;
public Transform canvas;
// Use this for initialization
void Start () {
num = 0;
for (int i = 0; i < 16; i++)
map [i] = 0;
length = shuzi.Length;
for (int i = 0; i < 2; i++)
create ();
}
// Update is called once per frame
void Update () {
if (!zangting) {
if (time < 80) {
time++;
} else if (time == 80) {
create ();
num = jishu ();
time++;
} else {
if (Input.GetKeyDown (KeyCode.W)) {
time = 0;
}
if (Input.GetKeyDown (KeyCode.S)) {
time = 0;
}
if (Input.GetKeyDown (KeyCode.A)) {
time = 0;
}
if (Input.GetKeyDown (KeyCode.D)) {
time = 0;
}
}
}else {
canvas.GetChild (0).gameObject.SetActive (true);
}
}
int jishu(){
int sum = 0;
for (int i = 0; i < 16; i++)
if (map [i] != 0)
sum++;
return sum;
}
bool isuse(int x,int y){
if(map[x+y*4]==0)
return true;
else
return false;
}
void create(){
if (num == 16)
if (gameover ()) {
zangting=true;
return;
}//gameover
int x = Random.Range (0,4);
int y= Random.Range (0,4);
int p=Random.Range (0,10);
while (!isuse (x, y)) {
x = Random.Range (0,