1.让cube沿着矩形四个点运动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cube : MonoBehaviour {
// Use this for initialization
private Vector3 vec;
float time = 0;
void Start () {
vec = transform.position;//存取坐标
}
int speed = 1;
float speed2 = 0;
// bool b = true;
// Update is called once per frame
void Update () {
//time += Time.deltaTime;//计时器
//移动
transform.localScale = new Vector3(1,1,1);
transform.Translate(new Vector3(0.02f * speed, 0, speed2));
if (transform.position.x >=4)
{
speed = 0;
speed2 = -0.02f;
}
if (transform.position.z<- 4)
{
speed = -1;
speed2 = 0;
}
if (transform.position.x < -4)
{
speed = 0;
speed2 = 0.02f;
}
if (transform.position.z >0)
{
transform.position = vec;
speed = 1;
speed2 = 0;
}
//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,5);//围绕别人转
//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(0))
{
pos = hit.point;
transform.LookAt(new Vector3(pos.x, pos.y + 0.5f, pos.z));//lookat
b = true;
}
}
if (b)
{
transform.Translate(0,0,5*Time.deltaTime);
if (Vector3.Distance(transform.position,pos)<1f)
{
b = false;
print(123);
}
}
}
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(0))//判断是否点击了鼠标左键
{
if (hit.collider.tag.Equals("cube"))//判断是否点击的是cube
{
hit.collider.gameObject.GetComponent<MeshRenderer>().material.color = gameclor[Random.Range(0, 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 = 0; i<10; i++)
{
for (int j = 0; j < 10; j++)
{
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);//生成cube
obj.transform.position = new Vector3(i, j, 0);//生成位置
obj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);//生成大小
obj.GetComponent<MeshRenderer>().material.color = c[Random.Range(0, 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(0))
{
cubeObj= hit.collider.gameObject;
cubeObj.transform.localScale = new Vector3(1,1,1);
}
}
if (Input.GetMouseButtonUp(0)&&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 = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
GameObject obj = Instantiate(cube);//需要预制体式添加cube
obj.transform.position = new Vector3(i, j, 0);
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(0, 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(0))
{
obj = hit.collider.gameObject;
obj.transform.localScale = new Vector3(1, 1, 1);
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 - 1, vec.z);
}//自动补齐
}
GameObject newobj = Instantiate(cube);//重新生成cube
newobj.GetComponent<MeshRenderer>().material = color[Random.Range(0, color.Length)];//添加颜色
newobj.transform.position = new Vector3(vec.x, 9, 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);
//}
}
}
}
9.
消消乐--单消--数组方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TextScripts : MonoBehaviour
{
// List<GameObject> list = new List<GameObject>();
GameObject[,] array = new GameObject[10,10];
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 = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj.transform.position = new Vector3(i, j, 0);
obj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
obj.tag = "cube";
obj.GetComponent<MeshRenderer>().material = m[Random.Range(0,3)];
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(0))
{
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+1; i < 10; i++)//从销毁的上边第一个开始
{
array[a, i].transform.position -= new Vector3(0,1,0);/到比销毁物体坐标的y大的物体把其y-1
array[a, i - 1] = array[a,i];//坐标统一减去1,导致索引对应物体改变
}
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj.transform.position = new Vector3(pos.x, 9, 0);
obj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
obj.tag = "cube";
obj.GetComponent<MeshRenderer>().material = m[Random.Range(0, 3)];
// list.Add(obj);
array[a, 9] = 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 = 0;//默认可以发出技能
}
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)//技能控制在5秒冷却
{
f = (5 - time);//5秒倒计时
image.fillAmount = (f) / 5;//image也在360度递减
text.text = (f).ToString();//文本输出倒计时
if (f < 0.1f && f >= 0)/控制在0.1秒以内结束时才可以重新开启技能
{
bb = true;//重新开启技能Button可以点击了
}
}
else
{
time = 0;//超过5秒后时间置零
b = false;/tton点击后又可以计时了
}
}
}
}
莫说我穷的叮当响,大袖揽清风。 莫讥我困时无处眠,天地做床被。 莫笑我渴时无美酒,江湖来做壶。