Unity3D如何实现飞机大战游戏?

不懂Unity3D如何实现飞机大战游戏??其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。

实现背景轮播

1、首先找两个背景图片,让两张图片竖直摆放且没有间隔

2、两个图片的下降的播放速度应当同步

public float moveSpeed = 3f;//指的是在unity里的移动速度
  // Update is called once per frame
  void Update()
  {
    this.transform.Translate(Vector3.down * moveSpeed *Time.deltaTime);
    Vector3 vector3 = this.transform.position;
    //表示背景已经出了游戏相机的边框
    if (vector3.y <= -8.52f)
    {
      //将其移到上面的游戏背景区,如果是-vector3.y会导致两张图片之间有空隙无法达到轮播的效果
      this.transform.position = new Vector3(vector3.x, vector3.y+8.52f*2, vector3.z);
    }

出现的问题:

当图片的位置变成-8.52以下时,更改位置使用到的是
this.transform.position = new Vector3(vector3.x, -vector3.y, vector3.z);
导致当背景图进行播放的时候会产生间隙。因为vector3的值小于-8.52时使用绝对值时图片的高会比加法大,导致有间隙。

实现角色的动画

1.假设该动画是由多张图片构成的,那么可更改SpriteRender组件的Sprite属性以实现动画的效果。

2.在初始化中得到组件,在update中修改Sprite属性

//判断动画是否继续,因为如果暂停了游戏,就可以不进行动画
public bool animation = true;
//每秒播放几帧
public int frameCountPreSeconds = 10;
 //计时器
  public float timer = 0;                                    
  //播放帧的数组
  public Sprite[] sprites;
  private SpriteRenderer SpriteRenderer;
  // Start is called before the first frame update
  void Start()
  {
    SpriteRenderer = this.GetComponent<SpriteRenderer>();
  }

  // Update is called once per frame
  void Update()
  {
    if (animation) {
      timer += Time.deltaTime;
      //1f/frameCountPreSeconds 每一帧的时间间隔          
      int frameIndex =(int) (timer /(1f/ frameCountPreSeconds));
      //当前应当播放的是哪一帧
      int frame = frameIndex % 2;
      //首先先获取组件SpriteRenderer,再获取组件里的sprite
      SpriteRenderer.sprite=sprites[frame];
    }
  }

感谢你能够认真阅读完这篇文章,希望小编分享Unity3D如何实现飞机大战游戏?内容对大家有帮助,同时也希望大家多多支持亿速云,关注行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!