love2D love.physics和设置图像到身体

时间:2016-10-18 18:43:19

标签: lua love2d

我正在尝试将图像设置为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

1 个答案:

答案 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