当前位置: 首页 > news >正文

制作一款打飞机游戏17:敌人

创建敌人

首先,我们需要一个可以射击的飞船。因此,今天的目标是生成一个敌人。

导入精灵

现在,我需要选择这个帧,然后拖放到这里。制作敌人时,不仅要考虑静态敌人,还要考虑动态敌人,尤其是当屏幕上有很多这样的精灵时,动画会让游戏感觉更生动。

敌人动画

初步设置

现在,让我们把这些精灵导入系统。

敌人行为

创建敌人区域

我想创建一个敌人区域,并添加一个敌人。我们需要设置敌人的X和Y坐标,以及它的速度和动画。

绘制敌人

现在,我们要绘制敌人。关于绘制顺序,我认为让子弹在敌人上方绘制更有意义,因为子弹可能会与敌人相交。

滚动背景问题

当飞船左右移动时,敌人似乎也在移动。问题是我们不仅需要滚动背景,还需要滚动所有敌人以及爆炸等效果。这会让碰撞检测变得更复杂。

敌人动画

动画函数

现在,我想让敌人动画循环播放。我们可以创建一个特定的更新函数来处理敌人的动画。

敌人行为规划

初步移动

现在,敌人可以移动了,但我们需要规划更复杂的敌人行为。比如,让敌人飞进来,停留一秒,然后飞出去。

函数化敌人行为

理想情况下,我们应该将这种行为封装成一个函数,以便可以生成多个敌人,让它们每隔几秒飞进来并飞出去。


function startgame()px,py=64,64spd=1.4lastdir=0shipspr=0scroll=300xscroll=0mapsegi=0cursegs={}boss=falseparts={}shots={}shotwait=0muzz={}enemies={}add(enemies,{x=74,y=16,sani={18,19,20},si=1,sx=0.1,sy=0.2})_upd=upd_game_drw=drw_game
endfunction _draw()_drw()--★cursor(4,4)color(7)for txt in all(debug) doprint(txt)end
endfunction _update60()t+=1_upd()
end-->8
--drawfunction drw_game()for seg in all(cursegs) domap(seg.x,seg.y,xscroll,scroll-seg.o,18,8)endfor p in all(parts) doif p.age>=0 then--animate colorif p.ctab thenp.ctabv=p.ctabv or 0local i=(p.age+p.ctabv)/p.maxagei=mid(1,flr(1+i*#p.ctab),#p.ctab)p.c=p.ctab[i]endp.draw(p)endendfor e in all(enemies) domspr(e.sani[flr(e.si)],e.x+xscroll,e.y)pset(e.x+xscroll,e.y,8)endfor s in all(shots) do    mspr(s.sani[flr(s.si)],s.x,s.y)endfor m in all(muzz) do    mspr(m.sani[flr(m.si)],px+m.x,py+m.y)end--shipmspr(shiparr[flr(shipspr*2.4+3.5)],px,py)pset(px,py,8)local fframe=flamearr[t\3%4+1]mspr(fframe,px-1,py+8)mspr(fframe,px+2,py+8)debug[1]=scroll
endfunction drw_menu()map(19,8)
end
-->8
--updatefunction doenemies()for e in all(enemies) doe.x+=e.sxe.y+=e.sye.si+=0.1if flr(e.si)>#e.sani thene.si=1endend
end

相关文章:

  • G1 人形机器人软件系统架构与 Python SDK
  • SystemV-消息队列与责任链模式
  • Discuz!+DeepSeek:传统论坛的智能化蜕变之路
  • 鸿蒙移动应用开发--渲染控制实验
  • C++异步操作 - future async package_task promise
  • Vue项目依赖注入的使用
  • 深度学习模型搭建的基础原理详细介绍
  • C++学习笔记(三十六)——STL之排序算法
  • Java中内部类
  • 电脑硬盘丢失怎么找回?解决硬盘数据恢复的2种方法
  • win10中打开python的交互模式
  • c++STL——stack、queue、priority_queue的模拟实现
  • 【Linux】46.网络基础(3.3)
  • linux下使用wireshark捕捉snmp报文
  • GAEA的技术优势:分层加密与去中心化数据治理
  • 若依SpringCloud项目-定制微服务模块
  • macOS安全隐私最佳实践分析
  • Mujoco xml < sensor>
  • SEO长尾关键词优化核心策略
  • 【Vue】状态管理(Vuex、Pinia)
  • 苹果手机为何无法在美制造?全球供应链难迁移
  • 国务院安委办、应急管理部进一步调度部署“五一”假期安全防范工作
  • 奈雪的茶叫停“能喝奶茶就不要喝水”宣传,当地市监称不要误导消费者
  • 2025年“投资新余•上海行”钢铁产业“双招双引”推介会成功举行
  • 如何反击右翼思潮、弥合社会分裂:加拿大大选镜鉴
  • 中信银行一季度净利195.09亿增1.66%,不良率持平