紧着这上一期,我们先来实现一下飞机的控制移动,我们就默认最常用的WASD来上下左右移动,方法其实很简单,主要通过Update()函数里面对用户对键盘的输入做一个检测就可以了,然后判定一下是不是超出边界就做完啦。

我们给飞机上的脚本,Update()里面添加一段代码就OK啦

            if(Input.GetKey(KeyCode.W)){if(transform.position.y <= 3.2f)transform.Translate(Vector3.up * Speed * Time.deltaTime);}if (Input.GetKey(KeyCode.S)){if (transform.position.y >= -3.2f)transform.Translate(Vector3.down* Speed * Time.deltaTime);}if (Input.GetKey(KeyCode.A)){if (transform.position.x >= -1.8f)transform.Translate(new Vector3(1,0,0) * -Speed * Time.deltaTime);}if (Input.GetKey(KeyCode.D)){if (transform.position.x <= 1.8f)transform.Translate(new Vector3(1, 0, 0) * Speed * Time.deltaTime);}

然后呢我们对飞机,子弹,敌机,奖励物品给贴一个标签,以后呢会用到的,方法就是点击你的物品,在右边的属性那里有一个Tag,然后Add Tag新增就OK了,已经有prefabs的就直接在prefabs里面改就OK咯

然后呢我们给prefabs子弹添加一个碰撞器(Box Collider 2D)和刚体(Rigidbody 2D),其中刚体那里我们设置子弹不受重力影响,以及碰撞器的属性改为触发器,不然射出去就会往下掉(= =)

调节不受重力的方法就是把刚体属性Gravity Scale设为0,然后碰撞器的Is Trigger打勾

之后我们拖一个prefabs到场景中调节一下碰撞器的大小范围是否正好符合子弹大小

这个绿色的框就是碰撞器的触发范围啦,一开始默认的可能会太大,需要自己调的

同样的我们给敌机只需要添加上Box Collider 2D

然后呢我们就在子弹的脚本处进行碰撞的检测啦

OnTriggerEnrter2D()是unity里面自带的碰撞检测的函数,不懂的可以查查帮助文档,这里面呢就用到了之前定义的tag,因为之后还会添加奖励物品的碰撞检测嘛,所以这样写是比较清晰的。

这里调用了GameObject里的一个函数SendMessage(),意思就是检测到碰撞到了other这个game object之后向它发送消息,让other调用自己的BeHit()方法

    void OnTriggerEnter2D(Collider2D other){if(other.tag == "Enemy"){if (!other.GetComponent<Emeny>().isDeath){//向敌机发送消息,调用函数BeHitother.gameObject.SendMessage("BeHit");GameObject.Destroy(this.gameObject);}}}

我们在敌机的脚本上添加一些变量

   public bool isDeath = false;       //是否死亡public Sprite[] explosionSprites;   //死亡爆炸效果的数组//死亡动画的计时器private float timer=0;//死亡动画每秒播放的帧数public int explosionAnimationFrame=10;private SpriteRenderer render;

在Start()中先获得它的SpriteRenderer组件

    void Start(){render = GetComponent<SpriteRenderer>();}

在Update()函数中加上播放死亡动画的过程,都是老套路了嘛

        if (isDeath){timer += Time.deltaTime;int frameIndex = (int)(timer / (1f / explosionAnimationFrame));if (frameIndex >= explosionSprites.Length){Destroy(this.gameObject);}else render.sprite = explosionSprites[frameIndex];}}

再添加一个控制生命的函数

    public void BeHit(){hp -= 1;if (hp <= 0){isDeath = true;return;} }

这样添加完成后呢,在prefabs里给你的敌机把死亡模型拖到里面,就大功告成啦

是不是很简单呢?赶紧动手试一试吧

unity3d开发 打飞机小游戏(五)(飞机移动/敌机死亡动画)相关推荐

  1. 基于Unity3D开发的3D小游戏牧师与魔鬼

    3D小游戏牧师与魔鬼 作业要求 编程实践,3D小游戏:牧师与魔鬼 列出游戏中提及的事物(Objects) 用表格列出玩家动作表(规则表),注意,动作越少越好 请将游戏中对象做成预制,并在 GenGam ...

  2. [视频教程]用Unity3d开发跳一跳小游戏

    本文首发于"洪流学堂"微信公众号. 洪流学堂,让你快人几步成为Unity大牛! 开发成果 包含的知识点 编辑器基本用法及操作 简单的C#编程 刚体Rigidbody组件 动态生成物 ...

  3. Python编写微信打飞机小游戏(五)

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...

  4. 编程语言用 Java 开发一个打飞机小游戏(附完整源码)

    编程语言用 Java 开发一个打飞机小游戏(附完整源码) 上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过 ...

  5. python飞机大战加背景音乐_python实现飞机大战小游戏 python飞机大战中的音频文件怎么改成MP3...

    怎么样用Python写飞机大战游戏 python开发飞机大战外星人游戏怎么弄双人模式新的一年,哪怕仍是一个人,也要活得像一支队伍,为自己的头脑和心灵招兵买马,不气馁,有召唤,爱自由. 主函数 impo ...

  6. 视频教程-JavaScript打飞机小游戏视频教程-JavaScript

    JavaScript打飞机小游戏视频教程 拥有6年web前端和后端开发经验,4年授课经验,还曾在百度专业培训过网络营销课程,曾就职于联想集团和当当网,不仅有丰富的项目实战经验还有营销经验,综合实力较强 ...

  7. 安卓小游戏:飞机大战

    安卓小游戏:飞机大战 前言 前面写了十二篇自定义view的博客,说实话写的还是有点无聊了,最近调整了一下,觉得还是要对开发有热情,就写了点小游戏,现在抽时间把博客也写一写,希望读者喜欢. 需求 这里就 ...

  8. 微信小游戏《飞机打方块》源码分享

    微信小游戏<飞机打方块>源码分享 游戏使用CocosCreator v2.4.2开发 源码:https://gitee.com/propertygame/cocos-creator3.x- ...

  9. Python编写微信打飞机小游戏(三)

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...

  10. Python编写微信打飞机小游戏(八)

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...

最新文章

  1. 51nod 最大M子段和系列
  2. 在交换机上配置Telnt
  3. js中变量和jsp中java代码中变量互相访问解决方案
  4. 揭秘HPE的最新一代组合式基础设施Synergy
  5. 软件工程第二次作业——结对编程
  6. 词云制作 Python
  7. 如何随机选取1000个关键字
  8. 想买楼下邻居的那套房,彼此熟悉,这种情况还用找中介付中介费吗?
  9. CISCO ASA防火墙配置实验
  10. pthread_mutex_init 互斥锁pthread_mutex_t的使用(转)
  11. 短视频仿抖音源码--探索短视频+时代
  12. 关于struts框架的优缺点
  13. 思科交换机配置试题_思科交换机配置命令
  14. redis 命令大全
  15. 微信大改版,时隔4年再次华丽转身。
  16. TV_Control Android机顶盒手机控制全套程序开源
  17. 【笔记】win10打开注册表的三种方式
  18. 【UI界面设计】网页设计基础笔记
  19. dsp6657的helloworld例程测试-第一篇
  20. 用户 用户组 切换用户

热门文章

  1. oracle官网(中文)
  2. 使用canvas实现贪吃蛇
  3. python:随机产生n个数
  4. mysql 联合主键自增,mysql联合主键自增、主键最大长度小记
  5. Unity3d版数字地球、谷歌地球(google earth)
  6. Android保存图片到系统图库并通知系统相册刷新
  7. 零基础快速入行入职软件测试工程师
  8. bitcscs计算机系统,深入理解计算机系统CSAPP-美-布莱恩特
  9. 对时间序列做分段相关性分析(matlab代码)
  10. 【Vue实战】使用vue-admin-template模板开发后台管理