上一节教程讲了如何加载图片,以及加载一个飞机,现在教大家如何创建子弹。 我们使用已经准备好的素材:
这是我们要使用的子弹素材。同样的,我们把它加载到内存中去: 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