lovely教学 Love教程


上一节教程讲了如何加载图片,以及加载一个飞机,现在教大家如何创建子弹 。我们使用已经准备好的素材:

lovely教学 Love教程

文章插图

这是我们要使用的子弹素材 。同样的,我们把它加载到内存中去: bulletImg = love.graphics.newImage("bullet.png") 那么如何使用它呢?
  • 玩家初始化
在发射子弹前,我们先要对我们的飞机初始化,我们让它出现在屏幕下方 。现在代码看起来是这样的:
function love.load()winWidth, winHeight = love.window.getMode()playerImg = love.graphics.newImage("player.png")bulletImg = love.graphics.newImage("bullet.png")player = { x = winWidth / 2, y = winHeight - playerImg:getHeight()}speed = 100end这里出现了两个新的方法,getMode返回的前两个返回值是我们目前窗口的高和宽,我们用 winWidth和winHeight初始化我们的飞机,而playerImg对象的getHeight方法则是获取图片的高 。经过初始化的飞机出现的位置:

lovely教学 Love教程

文章插图



  • 子弹发射
这里发射子弹采用的逻辑是按下x发射,那么逻辑上就是按下x时就创建子弹对象,这里使用table来存储子弹对象 。代码:
function love.load()winWidth, winHeight = love.window.getMode()playerImg = love.graphics.newImage("player.png")bulletImg = love.graphics.newImage("bullet.png")player = { x = winWidth / 2, y = winHeight - playerImg:getHeight()}speed = 100bullet = {}--存储子弹的tableendfunction love.update(dt)if love.keyboard.isDown("up") thenplayer.y = player.y - speed * dt;endif love.keyboard.isDown("down") thenplayer.y = player.y + speed * dt;endif love.keyboard.isDown("left") thenplayer.x = player.x - speed * dt;endif love.keyboard.isDown("right") thenplayer.x = player.x + speed * dt;endif love.keyboard.isDown("x") thentable.insert(bullet, {x = player.x, y = player.y})--当按下x时,往表里插入一个对象 。endendfunction love.draw()love.graphics.draw(playerImg, player.x, player.y)--遍历bullet,绘制子弹for k, v in ipairs(bullet) dolove.graphics.draw(bulletImg, v.x, v.y)endend运行结果:

lovely教学 Love教程

文章插图



现在子弹并不会动,因为我们没有写让子弹运动的代码 。现在暂时只让子弹向上飞 。代码:
function love.load()winWidth, winHeight = love.window.getMode()playerImg = love.graphics.newImage("player.png")bulletImg = love.graphics.newImage("bullet.png")player = { x = winWidth / 2, y = winHeight - playerImg:getHeight()}speed = 100bullet = {}--存储子弹的tableendfunction love.update(dt)if love.keyboard.isDown("up") thenplayer.y = player.y - speed * dt;endif love.keyboard.isDown("down") thenplayer.y = player.y + speed * dt;endif love.keyboard.isDown("left") thenplayer.x = player.x - speed * dt;endif love.keyboard.isDown("right") thenplayer.x = player.x + speed * dt;endif love.keyboard.isDown("x") thentable.insert(bullet, {x = player.x, y = player.y})--当按下x时,往表里插入一个对象 。endfor k, v in ipairs(bullet) dov.y = v.y - 150 * dtendendfunction love.draw()love.graphics.draw(playerImg, player.x, player.y)--遍历bullet,绘制子弹for k, v in ipairs(bullet) dolove.graphics.draw(bulletImg, v.x, v.y)endend【lovely教学 Love教程】现在,飞机发射的子弹就可以动啦 。


    特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。