Unity常用API
2014-07-26 15:34
423 查看
一、播放动画的方法
1.1 直接用Unity的编辑器编辑动画,但有个缺点就是不适合动画太多的精灵,不够灵活,不好控制
1.2 使用代码控制,这样比较灵活,但要书写比较多的代码
代码如下:
void update()
{
timer+=Time.deltaTime;
int frameIndex = (int)(timer/(1f/explosionAnimationFrame)); //explosionAnimationFrame设置的是动画速度,一般为10,数值越大,动画越快
if(frameIndex>=explosionSprites.Length){
Destroy(gameObject); //如果不需要循环播放就消除对象
}
else render.sprite=explosionSprites[frameIndex]; //frameIndex表示哪一张图片,如果要循环播放的那种只需要在前面加frameIndex=frameIndex%length
//explosionSprites 一个是sprits类型的数组
}
二、获取游戏对象或者游戏的组件的方法
GetComponent<SpriteRenderer> () 这个就是获取对象的精灵组件,通过这个组件可以切换精灵的图片
guiText = GameObject.FindGameObjectWithTag ("scoreGui").guiText; //获取Tag为scoreGui的物体
GameObject.Find("pickupManager").GetComponent<PickupSpawner>(); //获取名字为pickupManager的游戏物体
transform.root.GetComponent<Animator>(); //获取父亲组件
Camera.main.GetComponent<EnvGenerator> ();//获取摄像机的组件
三、给精灵加一个速度
3.1 transform.Translate (Vector3.down*speed*Time.deltaTime); //Vector3.down表示向下的速度,speed是速度,Time。deltaTime表示每秒,不乘的话按没帧移动,速度会比较快
3.2 this.rigidbody.velocity = new Vector3(vel.x,5,vel.z); //加入了rigibdody的精灵可以使用这个方法
3.3 使用Character Controller组件
controller = GetComponent<CharacterController> ();
float distance = Vector3.Distance (tmp, transform.position);
if(distance >= 0.1f)
{
state = PlayerState.Moving;
controller.SimpleMove(transform.forward * speed); //forward是Y轴
}
3.4 Vector3 moveDir = targetPos - transform.position; //移动的方向
transform.position += moveDir.normalized * moveSpeed * Time.deltaTime;
3.5 使用插值(以移动X轴为例子)
float moveLength = Mathf.Lerp(0,moveHorizontal,moveHorizontalSpeed * Time.deltaTime);
transform.position = new Vector3(transform.position.x + moveLength, transform.position.y, transform.position.z);
moveHorizontal-=moveLength;
if(Mathf.Abs(moveHorizontal)<0.5f) //距离少于0.5的直接移动
{
transform.position = new Vector3(transform.position.x + moveHorizontal, transform.position.y, transform.position.z);
moveHorizontal = 0;
nowLaneIndex = targetLaneIndex;
}
四、触发件事
void OnTriggerEnter2D(Collider2D other) // 刚体的进入触发时间,与此同时还有OnTriggerExit2D(退出)OnTriggerStay2D(停留)
void OnCollisionEnter2D(Collision2D other) //添加了rigidbody2D的物体触发的事件,同理也有上面的那个Exit,Stay两个触发事件
void Update()
void FixUpdate() //添加了rigibody2D的物体
void Awake()
五、获取鼠标单击命令或者键盘响应
GetMouseButton(0) 响应鼠标左键按着
GetMouseButtonDown(0) 鼠标按下的一瞬间
GetMouseButtonUp(0) 鼠标放开的一瞬间
float h = Input.GetAxis("Horizontal"); 获取左右方向键,-1为左,1为右
六、播放声音
6.1 直接添加声音组件,然后给组件添加上声音
6.2 代码如下
public AudioClip boom;(把音乐文件拖放到这个对象上面)
AudioSource.PlayClipAtPoint(boom, transform.position);
6.3 添加自带的PlaySound
七、其他
7.1other.gameObject.SendMessage("BeHit"); 触发对象脚本中的BeHit函数
7.2重复执行某个方法
InvokeRepeating ("fire",1,rate);//1秒后开始调用fire方法,以后每隔rate秒调用一次
CancelInvoke ("fire"); 取消被InvokeRepeating调用的方法
7.3生成一个物体的方法:
GameObject.Instantiate (enemy,position,Quaternion.identity); //生成一个物体,enemy是要生成的对象,position是位置,Quaternion.identity是保持角度不变
Instantiate(bomb, transform.position, transform.rotation);
// Create a quaternion with a random rotation in the z-axis.
Quaternion randomRotation = Quaternion.Euler(0f, 0f, Random.Range(0f, 360f));
// Instantiate the explosion where the rocket is with the random rotation.
Instantiate(explosion, transform.position, randomRotation);
如果要赋值得话需要在这样 Rigidbody2D bombInstantiate = Instantiate (bomb,transform.position,Quaternion.identity) as Rigidbody;
7.4//对本地数据的存取
highScore=PlayerPrefs.GetFloat ("score",0); 取数据
PlayerPrefs.SetFloat ("score",highScore);存数据
7.5 加载场景
pplication.LoadLevel(0);//从第0个场景开始,这里只有一个场景,使用前需要在File->Build Setting->Add Current
单例模式
public static GameManager _instance;
void Awake()
{
_instance = this;
}
在其他地方直接使用GameManager._instance然后就可以调用共有的函数和成员
1.1 直接用Unity的编辑器编辑动画,但有个缺点就是不适合动画太多的精灵,不够灵活,不好控制
1.2 使用代码控制,这样比较灵活,但要书写比较多的代码
代码如下:
void update()
{
timer+=Time.deltaTime;
int frameIndex = (int)(timer/(1f/explosionAnimationFrame)); //explosionAnimationFrame设置的是动画速度,一般为10,数值越大,动画越快
if(frameIndex>=explosionSprites.Length){
Destroy(gameObject); //如果不需要循环播放就消除对象
}
else render.sprite=explosionSprites[frameIndex]; //frameIndex表示哪一张图片,如果要循环播放的那种只需要在前面加frameIndex=frameIndex%length
//explosionSprites 一个是sprits类型的数组
}
二、获取游戏对象或者游戏的组件的方法
GetComponent<SpriteRenderer> () 这个就是获取对象的精灵组件,通过这个组件可以切换精灵的图片
guiText = GameObject.FindGameObjectWithTag ("scoreGui").guiText; //获取Tag为scoreGui的物体
GameObject.Find("pickupManager").GetComponent<PickupSpawner>(); //获取名字为pickupManager的游戏物体
transform.root.GetComponent<Animator>(); //获取父亲组件
Camera.main.GetComponent<EnvGenerator> ();//获取摄像机的组件
三、给精灵加一个速度
3.1 transform.Translate (Vector3.down*speed*Time.deltaTime); //Vector3.down表示向下的速度,speed是速度,Time。deltaTime表示每秒,不乘的话按没帧移动,速度会比较快
3.2 this.rigidbody.velocity = new Vector3(vel.x,5,vel.z); //加入了rigibdody的精灵可以使用这个方法
3.3 使用Character Controller组件
controller = GetComponent<CharacterController> ();
float distance = Vector3.Distance (tmp, transform.position);
if(distance >= 0.1f)
{
state = PlayerState.Moving;
controller.SimpleMove(transform.forward * speed); //forward是Y轴
}
3.4 Vector3 moveDir = targetPos - transform.position; //移动的方向
transform.position += moveDir.normalized * moveSpeed * Time.deltaTime;
3.5 使用插值(以移动X轴为例子)
float moveLength = Mathf.Lerp(0,moveHorizontal,moveHorizontalSpeed * Time.deltaTime);
transform.position = new Vector3(transform.position.x + moveLength, transform.position.y, transform.position.z);
moveHorizontal-=moveLength;
if(Mathf.Abs(moveHorizontal)<0.5f) //距离少于0.5的直接移动
{
transform.position = new Vector3(transform.position.x + moveHorizontal, transform.position.y, transform.position.z);
moveHorizontal = 0;
nowLaneIndex = targetLaneIndex;
}
四、触发件事
void OnTriggerEnter2D(Collider2D other) // 刚体的进入触发时间,与此同时还有OnTriggerExit2D(退出)OnTriggerStay2D(停留)
void OnCollisionEnter2D(Collision2D other) //添加了rigidbody2D的物体触发的事件,同理也有上面的那个Exit,Stay两个触发事件
void Update()
void FixUpdate() //添加了rigibody2D的物体
void Awake()
五、获取鼠标单击命令或者键盘响应
GetMouseButton(0) 响应鼠标左键按着
GetMouseButtonDown(0) 鼠标按下的一瞬间
GetMouseButtonUp(0) 鼠标放开的一瞬间
float h = Input.GetAxis("Horizontal"); 获取左右方向键,-1为左,1为右
六、播放声音
6.1 直接添加声音组件,然后给组件添加上声音
6.2 代码如下
public AudioClip boom;(把音乐文件拖放到这个对象上面)
AudioSource.PlayClipAtPoint(boom, transform.position);
6.3 添加自带的PlaySound
七、其他
7.1other.gameObject.SendMessage("BeHit"); 触发对象脚本中的BeHit函数
7.2重复执行某个方法
InvokeRepeating ("fire",1,rate);//1秒后开始调用fire方法,以后每隔rate秒调用一次
CancelInvoke ("fire"); 取消被InvokeRepeating调用的方法
7.3生成一个物体的方法:
GameObject.Instantiate (enemy,position,Quaternion.identity); //生成一个物体,enemy是要生成的对象,position是位置,Quaternion.identity是保持角度不变
Instantiate(bomb, transform.position, transform.rotation);
// Create a quaternion with a random rotation in the z-axis.
Quaternion randomRotation = Quaternion.Euler(0f, 0f, Random.Range(0f, 360f));
// Instantiate the explosion where the rocket is with the random rotation.
Instantiate(explosion, transform.position, randomRotation);
如果要赋值得话需要在这样 Rigidbody2D bombInstantiate = Instantiate (bomb,transform.position,Quaternion.identity) as Rigidbody;
7.4//对本地数据的存取
highScore=PlayerPrefs.GetFloat ("score",0); 取数据
PlayerPrefs.SetFloat ("score",highScore);存数据
7.5 加载场景
pplication.LoadLevel(0);//从第0个场景开始,这里只有一个场景,使用前需要在File->Build Setting->Add Current
单例模式
public static GameManager _instance;
void Awake()
{
_instance = this;
}
在其他地方直接使用GameManager._instance然后就可以调用共有的函数和成员
相关文章推荐
- 初试Unity 3D——常用API(2)
- Unity2D常用API
- Unity 3D - 常用API
- Unity 常用旋转API
- UNITY开发中常用的一些API
- 【unity3d学习笔记】unity常用API解析
- 初识Unity 3D——常用API(3)
- UnityAPI常用方法和类
- GameSparks的连接与应用(Unity)--(4)常用API
- Unity的常用API
- 【Unity】Kinect一些常用的API
- Unity常用脚本API
- Unity常用API理解
- 杂谈unity 旋转的常用API和其他知识
- Win32 API 常用函数之二
- Office API VBA的常用链接
- Ajax 常用api整理
- Window编程常用API 函数
- windows常用api
- MFC/WIWIndows常用API--2