gameObject, vector and transform
调用其它组件中成员
通过GameObject(游戏物体)。
Base class for all entities in Unity scenes。 是Unity场景里面所有实体的基类。
可以理解为两个类间的访问,定义一个超类用其中一个类实现。
默认的gameObject为当前组件。transform为变换,有常用属性position(Vector3三维向量)。
熟记transform下属性和方法作用。
transform.translate() 平移,给定vector3,给定坐标系'物体坐标系或者世界坐标系'。由于每秒执行60次,可以用Time.deltaTime(增量时间:以秒计算,完成最后一帧的时间)放慢。
让cube在n个点间转动:
using UnityEngine;
using System.Collections;
public class TransformTest : MonoBehaviour {
// Use this for initialization
public Transform[] point ;//n个点,在unity中控制长度和gameobject
public Transform nextPoint ;//下一个要运动到的点
public int index ;//当前位置,用于求下一个要运动到的点
void Start () {
index = ;
nextPoint = point[] ;
}
// Update is called once per frame
void Update () {
if(Vector3.Distance(transform.position, nextPoint.transform.position)>0.1f){//transform默认为当前物体,同gameObject
transform.Translate(Vector3.Normalize(nextPoint.position-transform.position)**Time.deltaTime, Space.World) ;//normalize,向量标准化
//这里要用世界坐标系,用物体坐标系的话,在改变cube的Rotation后出错
}else{
index = (index+)%point.Length ;
nextPoint = point[index] ;
}
}
}
旋转,正角度为左手,负角度右手。transform.Rotate (new Vector3(0, -1, 0));
改变父物体的比例,子物体也会改变,比例不为1:1,移动父物体,子物体同样移动。(transform.parent,获取父物体的transform)
transform.position输出的是世界坐标系下的坐标位置,transform.localPosition为在父物体下物体坐标系的坐标位置。
定时重复调用可以使用InvokeRepeating函数实现, 启动0.5秒后每隔1秒执行一次 DoSomeThing 函数
void Start() {
InvokeRepeating("DoSomeThing", 0.5f, 1.0f);
}
监控键盘:
Input.GetKeyDown(KeyCode.W) KeyCode中包含键盘所有键位
Input.GetKeyUp(KeyCode.W)
Input.GetKey(KeyCode.W) 按下时一直执行
对三种不同的动作监控
// if(Input.GetKey(KeyCode.W)){
// transform.Translate(Vector3.forward) ;
// }
// if(Input.GetKey(KeyCode.S)){
// transform.Translate(-Vector3.forward) ;
// }
// if(Input.GetKey(KeyCode.A)){
// transform.Rotate(-Vector3.up);
// }
// if(Input.GetKey(KeyCode.D)){
// transform.Rotate(Vector3.up);
// }
等同
transform.Translate(new Vector3(, , Input.GetAxis("Vertical"))) ;
transform.Rotate(new Vector3(, Input.GetAxis("Horizontal"), )) ;//获取轴 edit/projectsetting/input
Time.timeScale 改变游戏运行速度,0为暂停游戏,暂停时update继续执行(FixedUpdate()下完全停止)。
用Time.timescale加速或者减速时,在FixedUpdate()下使用。
GameObject.tag 标签
GameObject.layer 层
都可自定义
GameObject.FindGameObjectsWithTag 返回GameObject[]
GameObject.FindGameObjectWithTag 返回GameObject
若在脚本AScript里想要获取BScript里的变量,先获取BScript所在GameObject的实例
例:
GameObject mainCarm = GameObject.FindGameObjectWithTag("MainCamera") ;
然后通过mainCarm找到BScript实例
BScript bScript = (BScript)mainCarm.GetComponent("BScript") ;
这样就可以使用BScript里的所有公共变量和方法。
GameObject.SendMessage("方法名"); 若本身调用,搜寻同级所有GameObject,若其他object调用,搜寻该object中的此方法
gameObject, vector and transform的更多相关文章
- 【Unity3D游戏开发】GameObject.Find()、Transform.Find查找隐藏对象 (十)
GameObjectFindTransformFind查找游戏对象 前置条件 相关API 1 GameObjectFind 2 TransformFind 3 其他查找 实际测试 即使隐藏root节点 ...
- GameObject.Find与Transform.Find的区别
1.GameObject.Find 函数原型: public static GameObject Find(string name); 说明:1.GameObject只能查找到active的物体 2. ...
- Gameobject.Find和Transform.Find应用区别
using UnityEngine;using System.Collections; public class test : MonoBehaviour{ private GameObject ro ...
- Unity GameObject.Find 和 transform.Find
transform.Find(""); 找到子游戏对象,找自己找不到,能找到未激活的子游戏对象. 括号里可以是游戏对象的名字,也可以是层级. GameObject.Find(&qu ...
- Unity3D_06_根据Transform、GameObject和Tag获取子对象集合
导引: 因为项目中难免要多次进行获取子对象或者子对象的集合,所以写一个单独的类,用来做这些操作.然后再实际的项目中,只需要使用 transform 或者 gameobject 调用这些方法就可以快速的 ...
- [CareerCup] 18.10 Word Transform 单词转换
18.10 Given two words of equal length that are in a dictionary, write a method to transform one word ...
- Unity3D学习笔记——递归+非递归遍历GameObject的子物体
在Unity3D中没有提供直接的方法获取某个GameObject的子GameObject,但是所有的GameObject都有transform对象,所以,一般是通过获取子GameObject的tran ...
- Unity中的各种寻找GameObject方法
1.GameObject.Find():寻找Hierarchy面板中的activie 不为false的游戏对象: 路径如官方事例写法: public class ExampleClass : Mono ...
- unity中遍历Transform的子物体
1.遍历Transform直接子transform private void Start() { var Equipment = building.transform.FindChild(" ...
随机推荐
- Android IOS WebRTC 音视频开发总结(二一)-- 黑屏问题
本文主要介绍音视频通话中收到第一帧图像后视频一直卡住的问题,文章来自博客园RTC.Blacker,转载请说明出处. 因为苹果AppStore要求从2015年2月1日开始所有所有上架App必须支持arm ...
- linq to xml 基本操作
使用XDocument类来进行简单的xml操作,用于软件参数的设置保存. using System; using System.Collections.Generic; using System.Li ...
- JS常用小技巧
iframe子窗口调用父窗口方法 parent.functionName(); 二.iframe 父窗口和子窗口相互的调用方法 1.IE中使用方法: 父窗口调用子窗口:iframe_ID.iframe ...
- 卡通风格的连连看ios游戏源码
卡通风格的连连看游戏源码,该游戏是一款韩国人做的卡通风格的ios连连看游戏源码,源码设计的效果非常漂亮的,而且运行起来感觉也很好.1.游戏采用倒计时模式2.该游戏是一款社交游戏,需要通过faceboo ...
- c#自定义进度条
有些时候我们做的程序需要进度条,而vs提供的控件不是我们想要的.先看效果图: 进度条闪烁动画,当然背景可设为Transparent 之前想手绘进度条线条的,结果控件运行时会闪烁,所以直接用 ...
- sublime几个有用的快捷键
几个有用的快捷键:Ctrl+D:选择多个相同字符串进行修改.选中字符串,按住Ctrl+D,继续选中下一个.Ctrl+Shift+L:将选中的内容切割成多行,然后每一行可以同时编辑Ctrl+J:将已选择 ...
- varnish状态引擎2
如何让varnish支持虚拟主机: if (req.http.host = "www.nihao.com") { } 强制对某资源的请求,不检查缓存: 上图表示以/test1.ht ...
- thinkphp foreach循环生成二维数组的方法
先做个问题记录,另外下面是做的过程中遇到的一个没想明白的现象 foreach($result as $key => $val ){ $wzList[$key]['lik']=$val[0]; $ ...
- Nginx安装第二步手动下载依赖包
nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息. 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好. ububtu平台编译环 ...
- CSS 设置TABLE 表格 边框
/*table列表 合并边框设置*/ .tablelist { border-collapse:collapse; } /*table列表 设置边框宽度及颜色*/ .tablelist td { bo ...