当前位置:   article > 正文

Unity3D 太空射击游戏学习笔记_perspective box colider

perspective box colider

Unity4.3游戏开发项目实战(龚老师编著)第二章太空射击

 

1、摄像头:透视投影Perspective和正交投影Orthographic的区别。这是个2D游戏,所以选择后者。

2、碰撞检测:游戏里飞机发射子弹击碎岩石,岩石撞碎飞机都需要用到碰撞检测。

      碰撞检测过程中需要为撞击与被撞击物体加上碰撞体。子弹使用胶囊碰撞体(CapsuleCollider),飞机和岩石使用立方体碰撞体(Box Collider),并且勾选Is Trigger选项。

      撞击者(攻击方)需要添加刚体(Rigidbody)。

      撞击响应函数这里使用的是void OnTriggerEnter(Collider other),其中用other.tag == "Player"(飞机的tag是Player)来判断是否碰撞到了飞机,而projectile则是子弹。 http://blog.csdn.net/Monzart7an/article/details/22739421这篇文章详细分析了碰撞检测。

3、动画:岩石被击碎和飞机爆炸都会有爆炸动画。岩石爆炸总共有7帧图像,打包成一幅308*49的图片。所以可以设置Tiling属性的X=0.143表示只显示原图X轴的七分之一,而改变Offset中的X则可显示不同帧画面。这里直接贴代码:

  1. using UnityEngine;
  2. using System.Collections;
  3. public class ExplosionController : MonoBehaviour {
  4. public int index = 0;
  5. public int frameNumber = 7;
  6. float frameRate = 0;
  7. float myTime = 0;
  8. int myIndex = 0;
  9. // Use this for initialization
  10. void Start () {
  11. frameRate = 1.0f / frameNumber;
  12. }
  13. // Update is called once per frame
  14. void Update () {
  15. myTime += Time.deltaTime;
  16. myIndex = (int)(myTime * frameNumber);
  17. index = myIndex % frameNumber;
  18. renderer.material.mainTextureScale = new Vector2 (frameRate, 1);
  19. renderer.material.mainTextureOffset = new Vector2 (index * frameRate, 0);
  20. if (index == frameNumber - 1) {
  21. Destroy (gameObject);
  22. }
  23. }
  24. }

4、记录最高分数:其实就是保存和读取一个变量到本地。这里使用的是PlayerPrefs.SetInt("highScore")和PlayerPresf.GetInt("highScore")的方法,u3D会将变量名和值保存为键值对的形式。

5、切换场景:首先定义不同的场景(New Scene),调用Application.LoadLevel("场景名”)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/104181
推荐阅读
相关标签
  

闽ICP备14008679号