unity之让obj旋转自转等操作
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);
//}
}
}
}
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点击后又可以计时了
} } }
}
unity之让obj旋转自转等操作的更多相关文章
- Eigen库实现简单的旋转、平移操作
本来课程要求用GUI界面来实现Eigen的旋转.平移操作的,但是接触GUI编程时间太短,虽然要求很简单,但是做了几天还是没有完成.就把命令行下面的简单的贴一下吧. main.cpp #include ...
- Unity摄像机围绕物体旋转两种实现方式
第一种,使用Transform 函数 RotateAround. 代码如下: public Transform target;//获取旋转目标 private void camerarotate() ...
- 【转】Unity 之 移动设备的触控操作
http://blog.csdn.net/anyuanlzh/article/details/18367941 这篇博文将简单的记录,如何用unity处理在移动设备上的触控操作. iOS和And ...
- maya和Unity中的坐标系旋转
maya软件是用的右手坐标系,默认旋转顺序是ZYX,即先绕Z轴旋转,再绕Y轴旋转,最后绕X轴旋转. 比如在maya软件中,右侧的旋转顺序是可选的,默认的选择是“XYZ”,其实物体旋转顺序是倒着念,即上 ...
- Android Bitmap 缩放 旋转 水印 裁剪操作
在android当中,Bitmap代表一个图片,里面封装了图片相关的信息. 一.将图片进行缩放操作 1.获得Bitmap对象 Bitmap bitmap = BitmapFactory.decodeR ...
- unity还原three之旋转
http://www.360doc.com/content/16/0829/14/12282510_586760119.shtml unity使用左手坐标系,另外在做旋转的时候必须弄清楚旋转坐标轴和旋 ...
- unity鼠标拖动物体旋转
using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> / ...
- 运用Unity结合PolicyInjection实现拦截器[结合操作日志实例]
上一篇文章我们通过Unity自身Unity.InterceptionExtension.IInterceptionBehavior实现一个有系统关异常日志记录:解决代码中到处充满的异常记录的代码: 本 ...
- FairyGUI编辑器的和unity里的Obj对应关系
1.在FairyGUI官网上下载好unity的工程,用FairyGUI编辑器打开它的官方案例 2.在FairyGUI编辑器和Unity中,从一个最简单的示例"Bag"着手. ...
随机推荐
- vue中导入外面文件(css,js)方式
有时我们需要导入外面的css文件(例如reset.css文件,bootstrap.css,jQuery.js文件),通常可通过import "name.css"的形式 对于rese ...
- Xml文件删除节点总是留有空标签
---恢复内容开始--- 在删除Xml文件时,删除成功后还有标签,让我百思不得其解,因为xml文档中留着这空标签会对后续的操作带来很多麻烦,会取出空值,人后导致程序中止. 导致这种情况的原因是删除xm ...
- beginner’s mistake
PHP Advanced and Object-Oriented Programming 3rd Edition Related to modularity is abstraction: class ...
- Active MQ Fileserver 远程代码执行 (CVE-2016-3088)
ActiveMQ漏洞( CVE-2016-3088)利用拿下root权限主机 1.扫描目标主机 MacPC:~ liuxin$ nmap -Pn -p8161 -sV 192.168.xx.xx -- ...
- 被监测teamviewer被检测出用于商业用途
一.下载teamviewer的破解程序 下载链接 这个要付几块钱,本人付过,个人下载过,可以免费传给你们,可以留下邮箱,但是不一定及时回复. 二. 解压后将.exe放到对应的软件安装目录,运行,点击f ...
- nodejs 学习四 处理回调地狱
面对下面回调,你面对这样代码,你心里难道不百万只羊驼吗? nodejs 提供了util.promisify方法,来解决这类问题.(类似es6 种是提供了Promise的方法). const fs = ...
- 3.1-uC/OS-III的特点:
1.C/OS-III是一个可扩展的, 可固化的, 抢占式的实时内核, 它管理的任务个数不受限制. 它是第三代内核, 提供了现代实时内核所期望的所有功能包括资源管理.同步.内部任务交流等. uC/OS- ...
- centos7 管理开机启动:systemd
一.CentOS7 systemd 介绍 在 CentOS7 中,使用 systemd 来管理其他服务是否开机启动,systemctl 是 systemd 服务的命令行工具 [root@mysql ~ ...
- 用laravel dingo/api创建产品api
沿着上一篇来讲,我们来创建一个简单的item产品api,也是用到laravel dingo/api来实现,对dingo/api不熟的朋友可以翻看前面的文章.好,我们随着ytkah一起来创建产品api ...
- 20180824 SSRS Line Chart 绘制
(很多时候我都会只记录遇到的问题点,很少详细的写整个过程) 1. 安装ReportBulider 客户端,不需要填写server url ,可以先放空,后面再维护. 安装包官网可以下载,是免费的,现在 ...