我正在尝试将图像设置为Love2D中的物理主体。我已经到了物理对象上有图像的部分,但我似乎只能拥有图像并使物理对象的主体透明。
我有一个课程,所以我可以轻松创建实体的实例。这是绘图功能:
local object = {}
local object_mt = { __index = object }
function object.newRect(world,x,y,width,height,typeOfBody,sprite)
local instance = {}
setmetatable(instance, object_mt)
instance.body = love.physics.newBody(world, x, y, typeOfBody or nil) -- create a body at x,y
instance.shape = love.physics.newRectangleShape(x,y,width,height)
instance.fixture = love.physics.newFixture(instance.body,instance.shape) -- create a fixture of width/height
instance.image = sprite and love.graphics.newImage(sprite) or nil
return instance
end
function object:Draw()
love.graphics.polygon("fill",self.body:getWorldPoints(self.shape:getPoints()))
if self.image then
love.graphics.draw(self.image, self.body:getX(), self.body:getY(), self.body:getAngle(), 1, 1, self.image:getWidth()/2, self.image:getHeight()/2)
end
end
function object.getPosition()
return self.body:GetPosition()
end
return object
如果我在填充多边形之前绘制self.image,它似乎根本没有显示任何内容。
任何人都可以帮助我获得我需要的结果吗?
所有object.lua:
#!/bin/bash
cool () {
ssh -A SERVER << EOF
ls -l
EOF
}
fool () {
ssh -A GATEWAY << EOF
touch foobar
$(cool)
EOF
}
export -f cool
export -f fool
fool
答案 0 :(得分:2)
如果我理解你的问题,你应该只需要删除,
love.graphics.polygon("fill",self.body:getWorldPoints(self.shape:getPoints()))
从你的Draw
函数不绘制物理对象。但是,这会导致没有image
的任何对象无法显示任何内容。如果你只想用和image
从对象中删除多边形,那么你可以使用这样的东西:
function object:Draw()
if self.image then
love.graphics.draw(
self.image, self.body:getX(), self.body:getY(), self.body:getAngle(),
1, 1, self.image:getWidth() / 2, self.image:getHeight() / 2
)
else
love.graphics.polygon("fill", self.body:getWorldPoints(self.shape:getPoints()))
end
end