function love.load()
Object=require("classic")
require"panda"
panda=Panda(0,0,150)
end
function love.update(dt)
panda:update(dt)
end
function love.draw()
panda:draw()
end
Panda=Object:extend()
function Panda:new(x,y,speed)
self.x=x
self.y=y
self.speed=speed
self.image=love.graphics.newImage("panda.png")
end
function Panda:draw()
love.graphics.draw(self.image,self.x,self.y)
end
function Panda:update(dt)
if love.keyboard.isDown("left")
then
self.x=self.x-self.speed*dt
elseif love.keyboard.isDown("right")
then
self.x=self.x+self.speed*dt
end
end
function Panda:draw()
love.graphics.draw(self.image,self.x,self.y)
end
function love.load()
Object=require("classic")
require"panda"
panda=Panda(0,0,150)
end
function love.update(dt)
panda:update(dt)
end
function love.draw()
panda:draw()
end
Panda=Object:extend()
function Panda:new(x,y,speed)
self.x=x
self.y=y
self.speed=speed
self.image=love.graphics.newImage("panda.png")
--获取图片的宽度
self.width=self.image:getWidth()
end
function Panda:update(dt)
if love.keyboard.isDown("left")
then
self.x=self.x-self.speed*dt
elseif love.keyboard.isDown("right")
then
self.x=self.x+self.speed*dt
end
--获取窗口的宽度
local window_width=love.graphics.getWidth()
if self.x<0
then
self.x=0
elseif self.x>window_width-self.width
then
self.x=window_width-self.width
end
end
function Panda:draw()
love.graphics.draw(self.image,self.x,self.y)
end
Snake=Object:extend()
function Snake:new(x,y)
self.x=x
self.y=y
end
Snake=Object:extend()
function Snake:new(x,y)
self.x=x
self.y=y
self.speed=100
self.image=love.graphics.newImage("snake.png")
end
function Snake:update(dt)
self.x=self.x+self.speed*dt
end
function Snake:draw()
love.graphics.draw(self.image,self.x,self.y)
end
function love.load()
Object=require("classic")
require"panda"
require"snake"
panda=Panda(0,0,150)
snake=Snake(0,love.graphics.getHeight())
end
function love.update(dt)
panda:update(dt)
snake:update(dt)
end
function love.draw()
panda:draw()
snake:draw()
end
Snake=Object:extend()
function Snake:new(x,y)
self.x=x
self.y=y
self.speed=100
self.image=love.graphics.newImage("snake.png")
--图片高度与宽度
self.width=self.image:getWidth()
self.height=self.image:getHeight()
end
function Snake:update(dt)
self.x=self.x+self.speed*dt
--窗口宽度
local window_width=love.graphics.getWidth()
if self.x<0
then
self.x=0
elseif self.x+self.width>window_width
then
self.x=window_width-self.width
end
end
function Snake:draw()
love.graphics.draw(self.image,self.x,self.y)
end
Snake=Object:extend()
function Snake:new(x,y)
self.x=x
self.y=y
self.speed=100
self.image=love.graphics.newImage("snake.png")
--图片高度与宽度
self.width=self.image:getWidth()
self.height=self.image:getHeight()
end
function Snake:update(dt)
self.x=self.x+self.speed*dt
--窗口宽度
local window_width=love.graphics.getWidth()
if self.x<0
then
self.x=0
self.speed=-self.speed
elseif self.x+self.width>window_width
then
self.x=window_width-self.width
self.speed=-self.speed
end
end
function Snake:draw()
love.graphics.draw(self.image,self.x,self.y)
end
好了,我们有了一个熊猫和一个移动的蛇,现在只剩下子弹了。
Bullet=Object:extend()
function Bullet:new()
self.image=love.graphics.newImage("bullet.png")
end
function Bullet:draw()
love.graphics.draw(self.image)
end
Bullet=Object:extend()
function Bullet:new(x,y)
self.image=love.graphics.newImage("bullet.png")
self.x=x
self.y=y
self.speed=700
end
function Bullet:update(dt)
self.y=self.y+self.speed*dt
end
function Bullet:draw()
love.graphics.draw(self.image,self.x,self.y)
end
function love.load()
Object=require("classic")
require"panda"
require"snake"
require"bullet"
panda=Panda(0,0,150)
snake=Snake(0,love.graphics.getHeight()-105)
listOfBullets = {}
end
function love.update(dt)
panda:update(dt)
snake:update(dt)
end
function love.draw()
panda:draw()
snake:draw()
end
function Panda:keypress(key)
if key=="space"
then
table.insert(listOfBullets,Bullet(self.x,self.y))
end
end
function love.load()
Object=require("classic")
require"panda"
require"snake"
require"bullet"
panda=Panda(0,0,150)
snake=Snake(0,love.graphics.getHeight()-105)
listOfBullets = {}
end
function love.keypressed(key)
panda:keypress(key)
end
function love.update(dt)
panda:update(dt)
snake:update(dt)
end
function love.draw()
panda:draw()
snake:draw()
end
function love.load()
Object=require("classic")
require"panda"
require"snake"
require"bullet"
panda=Panda(0,0,150)
snake=Snake(0,love.graphics.getHeight()-105)
listOfBullets = {}
end
function love.keypressed(key)
panda:keypress(key)
end
function love.update(dt)
panda:update(dt)
snake:update(dt)
for k,v in ipairs(listOfBullets)
do
v:update(dt)
end
end
function love.draw()
panda:draw()
snake:draw()
for k,v in ipairs(listOfBullets)
do
v:draw()
end
end
function Bullet:checkCollision(obj)
end
Bullet=Object:extend()
function Bullet:new(x,y)
self.image=love.graphics.newImage("bullet.png")
self.x=x
self.y=y
self.speed=700
self.width=self.image:getWidth()
self.height=self.image:getHeight()
end
function Bullet:update(dt)
self.y=self.y+self.speed*dt
end
function Bullet:draw()
love.graphics.draw(self.image,self.x,self.y)
end
function Bullet:checkCollision(obj)
--子弹的左右上下
local self_left=self.x
local self_right=self.x+self.width
local self_top=self.y
local self_bottom=self.y+self.height
--蛇的左右上下
local obj_left=obj.x
local obj_right=obj.x+obj.width
local obj_top=obj.y
local obj_bottom=obj.y+obj.height
if self_left<obj_right
and self_right>obj_left
and self_top<obj_top
and self_bottom>obj_bottom
then
self.dead=true
obj.speed=obj.speed+50
end
end
function love.update(dt)
panda:update(dt)
snake:update(dt)
for k,v in ipairs(listOfBullets)
do
v:update(dt)
v:checkCollision(snake)
end
end
function love.load()
Object=require("classic")
require"panda"
require"snake"
require"bullet"
panda=Panda(0,0,150)
snake=Snake(0,love.graphics.getHeight()-105)
listOfBullets = {}
end
function love.keypressed(key)
panda:keypress(key)
end
function love.update(dt)
panda:update(dt)
snake:update(dt)
for k,v in ipairs(listOfBullets)
do
v:update(dt)
--每颗子弹检查是否与敌人有碰撞
v:checkCollision(snake)
--如果子弹的属性是self_dead的,那么这是真的
if v.dead==true
then
--从列表中删除它
table.remove(listOfBullets,k)
end
end
end
function love.draw()
panda:draw()
snake:draw()
for k,v in ipairs(listOfBullets)
do
v:draw()
end
end
function Bullet:update(dt)
self.y=self.y+self.speed*dt
--如果子弹不在屏幕上
if self.y>love.graphics.getHeight()
then
--重新开始游戏
love.load()
end
end
Bullet=Object:extend()
function Bullet:new(x,y)
self.x=x
self.y=y
self.speed=700
self.image=love.graphics.newImage("bullet.png")
self.width=self.image:getWidth()
self.height=self.image:getHeight()
end
function Bullet:update(dt)
self.y=self.y+self.speed*dt
--如果子弹不在屏幕上
if self.y>love.graphics.getHeight()
then
--重新开始游戏
love.load()
end
end
function Bullet:draw()
love.graphics.draw(self.image,self.x,self.y)
end
function Bullet:checkCollision(obj)
--子弹的左右上下
local self_left=self.x
local self_right=self.x+self.width
local self_top=self.y
local self_bottom=self.y+self.height
--蛇的左右上下
local obj_left=obj.x
local obj_right=obj.x+obj.width
local obj_top=obj.y
local obj_bottom=obj.y+obj.height
if self_left<obj_right and
self_right>obj_left and
self_top<obj_bottom and
self_bottom>obj_top
then
self.dead=true
---增加蛇的速度
if obj.speed>0
then
obj.speed=obj.speed+50
else
obj.speed=obj.speed-50
end
end
end
以上就是今天要讲的内容,本文仅仅简单介绍了Love2d之碰游戏:射击敌人(Game: Shoot the enemy),介绍了游戏:射击敌人(Game: Shoot the enemy)与及碰撞检测(Detecting collision)的深层使用,与博主的lua语言文章结合更好的理解love2d的编码,如果你是一名独立游戏开发者,或者一位对游戏开发有着深厚兴趣,但是又对于unity3d,ue4等这些对于新手而言不太友好的引擎而头疼的开发者;那么现在,你可以试试Love2D。Love2D是一款基于Lua编写的轻量级游戏框架,尽管官方称呼其为引擎,但实际上它只能称得上是一个框架,因为他并没有一套全面完整的解决方案。不过,这款框架上手及其容易,是学习游戏开发的初学者入门的一个良好选择。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_44918090/article/details/124636038
内容来源于网络,如有侵权,请联系作者删除!