基于love2d的飞机大战教程(一)续

基于love2d的飞机大战教程(一)续

首页休闲益智茄子飛行手游更新时间:2024-04-28

创建子弹

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

这是我们要使用的子弹素材。同样的,我们把它加载到内存中去: 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 = 100 end

这里出现了两个新的方法,getMode返回的前两个返回值是我们目前窗口的高和宽,我们用 winWidth和winHeight初始化我们的飞机,而playerImg对象的getHeight方法则是获取图片的高。 经过初始化的飞机出现的位置:

这里发射子弹采用的逻辑是按下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 = 100 bullet = {} --存储子弹的table end function love.update(dt) if love.keyboard.isDown("up") then player.y = player.y - speed * dt; end if love.keyboard.isDown("down") then player.y = player.y speed * dt; end if love.keyboard.isDown("left") then player.x = player.x - speed * dt; end if love.keyboard.isDown("right") then player.x = player.x speed * dt; end if love.keyboard.isDown("x") then table.insert(bullet, {x = player.x, y = player.y}) --当按下x时,往表里插入一个对象。 end end function love.draw() love.graphics.draw(playerImg, player.x, player.y) --遍历bullet,绘制子弹 for k, v in ipairs(bullet) do love.graphics.draw(bulletImg, v.x, v.y) end end

运行结果:

现在子弹并不会动,因为我们没有写让子弹运动的代码。现在暂时只让子弹向上飞。 代码:

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 = 100 bullet = {} --存储子弹的table end function love.update(dt) if love.keyboard.isDown("up") then player.y = player.y - speed * dt; end if love.keyboard.isDown("down") then player.y = player.y speed * dt; end if love.keyboard.isDown("left") then player.x = player.x - speed * dt; end if love.keyboard.isDown("right") then player.x = player.x speed * dt; end if love.keyboard.isDown("x") then table.insert(bullet, {x = player.x, y = player.y}) --当按下x时,往表里插入一个对象。 end for k, v in ipairs(bullet) do v.y = v.y - 150 * dt end end function love.draw() love.graphics.draw(playerImg, player.x, player.y) --遍历bullet,绘制子弹 for k, v in ipairs(bullet) do love.graphics.draw(bulletImg, v.x, v.y) end end

现在,飞机发射的子弹就可以动啦。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved