2016-07-04 13 views
0

Ich fange an, love2d Physik-Modul zu verwenden, um ein Spiel zu machen.Körper Zeichnung und Kollisionszone sind verschoben

Ich habe versucht, ein (horizontal) Wand-Objekt für den Spieler, der auf zu gehen, aber es gibt ein Problem:
den Spieler durch einen Teil passieren kann, wo die Wandzeichnung ist (dies auf dem rechten Seite passiert), und es kann zu Fuß über was wie "Luft" auf der linken Seite der Wand aussieht.

Es scheint, dass die Kollisionszone und die Zeichnung nicht perfekt überlappen.

das ist, wie ich die Mauer baue (in Wall Klasse):

function Wall:new(x, y, w, h, world) 
    self.x = x 
    self.y = y 
    self.w = w 
    self.h = h 

    self.body = love.physics.newBody(world, self.x, self.y, "kinematic") 
    self.shape = love.physics.newRectangleShape(self.w, self.h) 
    self.fixture = love.physics.newFixture(self.body, self.shape, 100) 
end 

und ich bin den Konstruktor mit diesen Variablen (in main.lua)

objects.wall = Wall(40, height - 60, 200, 5, world) 

dies ist, wie Aufruf Ich zeichne es (in Wall Klasse)

love.graphics.rectangle("fill", self.body:getX(), self.body:getY(), self.w, self.h) 

Ich benutze rxi/classic um Klassen zu machen.

Die Wand ist gezeichnet, es interagiert nur seltsam mit dem Spieler.

Screenshot hier https://imgur.com/sbLIY8v

+0

Denkst du einen Screenshot? – user6245072

+0

@ user6245072 getan, dass –

+0

Könnte es ein Problem mit dem Messgerät sein, das Sie verwendeten? – user6245072

Antwort

0

Es stellt sich heraus newRectangleShape erfordert die x- und y-Koordinaten für die Mitte des Rechtecks, und meine Ziehfunktion falsch war, weil ich x und y unter Berücksichtigung die Koordinaten der oberen linken Ecke zu sein .