1.让cube沿着矩形四个点运动

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class cube : MonoBehaviour { // Use this for initialization
private Vector3 vec;
float time = ;
void Start () {
vec = transform.position;//存取坐标
}
int speed = ;
float speed2 = ;
// bool b = true;
// Update is called once per frame
void Update () {
//time += Time.deltaTime;//计时器
//移动 transform.localScale = new Vector3(,,);
transform.Translate(new Vector3(0.02f * speed, , speed2));
if (transform.position.x >=)
{
speed = ;
speed2 = -0.02f;
}
if (transform.position.z<- )
{
speed = -;
speed2 = ; }
if (transform.position.x < -)
{
speed = ;
speed2 = 0.02f;
}
if (transform.position.z >)
{
transform.position = vec;
speed = ;
speed2 = ;
} //transform.Rotate(0, speed, 0);
}
}

2.cube之按键操作

//transform.Rotate(Vector3.right,50,Space.World);
自转// transform.RotateAround(Vector3.right,5);//只有世界坐标下的运动
transform.RotateAround(Vector3.zero,Vector3.up,);//围绕别人转
//if (Input.GetKey("w"))
//{s
// transform.Translate(Vector3.forward);//局地坐标(相对坐标)(0,0,1)
//}
//if (Input.GetKey("s"))
//{
// transform.Translate(Vector3.back);//世界坐标,绝对坐标(0,0,-1)
//}
//if (Input.GetKey("a"))
//{
// transform.Rotate(Vector3.down);//(0,-1,0)
//}
//if (Input.GetKey("d"))
//{
// transform.Rotate(Vector3.up);//(0,1,0)
//}
// transform.Translate(Vector3.right);//(1,0,0)
// transform.Translate(Vector3.left);//(-1,0,0) //if (Input.GetKey(KeyCode.W))
//{
// Debug.Log("摁下了W键");
//}
//if (Input.GetKeyDown(KeyCode.W))
//{
// Debug.Log("Down了一下");
//}
//if (Input.GetKeyUp(KeyCode.W))
//{
// Debug.Log("Up了一下");
//}
//if (Input.GetKey(KeyCode.Space))
//{
// Debug.Log("摁下了空格键");
//}
//if (Input.GetKeyDown(KeyCode.Space))
//{
// Debug.Log("Down了一下");
//}
//if (Input.GetKeyUp(KeyCode.Space))
//{
// Debug.Log("Up了一下");
//}
//if (Input.GetMouseButton(0))
//{
// print("持续摁下了鼠标左键");
//}
//if (Input.GetMouseButtonDown(0))
//{
// print("摁下了鼠标左键");
//}
//if (Input.GetMouseButtonUp(0))
//{
// print("抬起了鼠标左键");
//}
//if (Input.GetMouseButton(1))
//{
// print("摁下了鼠标右键");
//}
//if (Input.GetMouseButton(2))
//{
// print("摁下了鼠标中键");
//}

3.射线检测

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;//检测信息
if (Physics.Raycast(ray,out hit))
{
print(hit.point);
if (hit.collider.name == "Cube")
{
hit.collider.gameObject.GetComponent<MeshRenderer>().material.color = Color.red;
} }

4.cube岁鼠标移动

public GameObject obj;
Vector3 pos;
bool b = false;
// Use this for initialization
void Start () { } // Update is called once per frame
void Update ()
{
// transform.LookAt(obj.transform);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;//检测信息
if (Physics.Raycast(ray, out hit))
{
if (Input.GetMouseButtonDown())
{
pos = hit.point;
transform.LookAt(new Vector3(pos.x, pos.y + 0.5f, pos.z));//lookat
b = true;
}
}
if (b)
{
transform.Translate(,,*Time.deltaTime);
if (Vector3.Distance(transform.position,pos)<1f)
{
b = false;
print();
}
}
}

5.

点击cube随机变颜色,掉下去
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class RayDiao : MonoBehaviour {
GameObject obj;
// Use this for initialization
void Start () { }
Color[] gameclor = { Color.black, Color.blue, Color.cyan, Color.green, Color.red, Color.yellow };//定义颜色数组
//Random num = new Random();
// Update is called once per frame
void Update () {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;//检查信息
if (Physics.Raycast(ray,out hit))
{
if (Input.GetMouseButtonDown())//判断是否点击了鼠标左键
{ if (hit.collider.tag.Equals("cube"))//判断是否点击的是cube
{
hit.collider.gameObject.GetComponent<MeshRenderer>().material.color = gameclor[Random.Range(, gameclor.Length)];//随机添加颜色 //hit.collider.gameObject.GetComponent<Rigidbody>().useGravity = true;//使添加的刚体激活
hit.collider.gameObject.AddComponent<Rigidbody>();//增加刚体
// obj= hit.collider.gameObject; }
}
}
//if (obj != null)//不是空
//{
// obj.transform.Translate(0, -1*Time.deltaTime, 0);//以(-1*Time.deltaTime)的速度下降
//} }
}

6.

添加cube的方法,如消消乐
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class creatCube : MonoBehaviour {
//public GameObject cube;
// Use this for initialization Color [] c = { Color.black, Color.blue, Color.clear, Color.cyan, Color.green, Color.red, Color.yellow };
void Start () {
/* GameObject obj = Instantiate(Resources.Load("Cube")) as GameObject;*///另一种生成cube方法 //GameObject obj = Instantiate(cube);//第二种方式生成cube,需要预制体
//GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);//生成cube
// obj.transform.position = Vector3.one;//one表示坐标(1,1,1)
//obj.transform.rotation = Quaternion.Euler(0, 45, 0);//角度设置
// obj.transform.localScale = new Vector3(2, 2, 2);//大小设置
//int index =obj.name.IndexOf("(");//字符串截取
//obj.name=obj.name.Substring(0, index); for (int i = ; i<; i++)
{
for (int j = ; j < ; j++)
{
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);//生成cube
obj.transform.position = new Vector3(i, j, );//生成位置
obj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);//生成大小
obj.GetComponent<MeshRenderer>().material.color = c[Random.Range(, c.Length)];//随机颜色
}
}
}
// Update is called once per frame
void Update () { }
}

7.

鼠标点击变大
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (hit.collider.gameObject.tag == "cube" &&Input.GetMouseButtonDown())
{
cubeObj= hit.collider.gameObject;
cubeObj.transform.localScale = new Vector3(,,);
}
}
if (Input.GetMouseButtonUp()&&cubeObj)
{
cubeObj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
}

8.

消消乐--单消————列表方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Raydaxiao : MonoBehaviour {
GameObject obj;
public GameObject cube;//为预制体生成cube做准备
//Color[] c = { Color.black, Color.blue, Color.clear, Color.cyan, Color.green, Color.red, Color.yellow };
public Material[] color;//材质数组
Vector3 vec;
List<GameObject> cubelist = new List<GameObject>();
//int num = 0;
// Use this for initialization
void Start () {
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
GameObject obj = Instantiate(cube);//需要预制体式添加cube
obj.transform.position = new Vector3(i, j, );
obj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
//obj.GetComponent<MeshRenderer>().material.color = c[Random.Range(0, c.Length)];//上颜色
obj.GetComponent<MeshRenderer>().material = color[Random.Range(, color.Length)];//随机材质
obj.tag = "cube";//定义名字为cube
//obj.AddComponent<Rigidbody>();//添加刚体
//num++;
//obj.name = "Cube" + num;//生成不同名字的cube
cubelist.Add(obj);
}
} } // Update is called once per frame
void Update () {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit))
{
if (hit.collider.gameObject.tag=="cube"&&Input.GetMouseButtonDown())
{
obj = hit.collider.gameObject;
obj.transform.localScale = new Vector3(, , );
vec = obj.transform.position;//获取当前cube的坐标
//Destroy(obj);//销毁cube
Destroy(obj);
cubelist.Remove(obj);
foreach (GameObject item in cubelist)
{
if (item.transform.position.x == vec.x && item.transform.position.y > vec.y)
{
//item.transform.position -= new Vector3(0, 1, 0);//另一种
item.transform.position = new Vector3(vec.x, item.transform.position.y - , vec.z);
}//自动补齐
}
GameObject newobj = Instantiate(cube);//重新生成cube
newobj.GetComponent<MeshRenderer>().material = color[Random.Range(, color.Length)];//添加颜色
newobj.transform.position = new Vector3(vec.x, , vec.z);//newcube的坐标
newobj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
//newobj.AddComponent<Rigidbody>();//添加刚体
//newobj.GetComponent<Rigidbody>().freezeRotation = true;
//newobj.GetComponent<BoxCollider>().size = new Vector3(1.1f, 1.1f, 1.1f); cubelist.Add(newobj);
}
//if (Input.GetMouseButtonUp(0)&&obj)
//{ // obj.transform.localScale = new Vector3(0.9f,0.9f,0.9f);
//}
}
}
}

unity之让obj旋转自转等操作-LMLPHP

9.

消消乐--单消--数组方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class TextScripts : MonoBehaviour
{
// List<GameObject> list = new List<GameObject>();
GameObject[,] array = new GameObject[,];
bool b = false;
GameObject cube;
Color[] c = { Color.red,Color.blue,Color.yellow,Color.green};
public Material[] m;
// Use this for initialization
void Start()
{
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj.transform.position = new Vector3(i, j, );
obj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
obj.tag = "cube";
obj.GetComponent<MeshRenderer>().material = m[Random.Range(,)];
array[i, j] = obj;
}
}
} // Update is called once per frame
void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray,out hit))
{
if (hit.collider.tag=="cube"&&Input.GetMouseButtonDown())
{
cube = hit.collider.gameObject;
Vector3 pos = cube.transform.position;
int a = (int)pos.x;
int b = (int)pos.y;
Destroy(cube);
for (int i = b+; i < ; i++)//从销毁的上边第一个开始
{
array[a, i].transform.position -= new Vector3(,,);/到比销毁物体坐标的y大的物体把其y-
array[a, i - ] = array[a,i];//坐标统一减去1,导致索引对应物体改变
} GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj.transform.position = new Vector3(pos.x, , );
obj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
obj.tag = "cube";
obj.GetComponent<MeshRenderer>().material = m[Random.Range(, )];
// list.Add(obj);
array[a, ] = obj;
}
} }
}

10.

技能冷却:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class CoolSkill : MonoBehaviour
{
public Image image;
float time;
float f;
public Text text;
bool b = false;
bool bb = true;
// Use this for initialization
void Start()
{
image = image.GetComponent<Image>();
text = text.GetComponent<Text>();
image.fillAmount = ;//默认可以发出技能
}
public void GetBool()
{
if (bb)//限制技能开启后才能使用
{
b = true;
bb = false;
}
}
// Update is called once per frame
void Update()
{
if (b)
{
time += Time.deltaTime;
if (time <= )//技能控制在5秒冷却
{
f = ( - time);//5秒倒计时
image.fillAmount = (f) / ;//image也在360度递减
text.text = (f).ToString();//文本输出倒计时
if (f < 0.1f && f >= )/控制在0.1秒以内结束时才可以重新开启技能
{
bb = true;//重新开启技能Button可以点击了
}
}
else
{
time = ;//超过5秒后时间置零
b = false;/tton点击后又可以计时了
} } }
}
05-16 11:45