Я пытаюсь сделать простой платформер в love2D. В настоящее время у меня есть класс моего игрока среди других вещей (класс обработки столкновений, классы уровней и т. Д.)Прыжки с гравитацией и столкновением
Основная проблема, с которой я сталкиваюсь, - прыгать. Я просто не могу заставить его работать правильно.
Когда я прыгаю, игрок становится слишком быстрым, чтобы на самом деле сделать прыжок полезным. Почему это происходит? Это код, перенесенный из ROBLOX, и в ROBLOX Studio, скачок работает нормально.
Это внутри функции обновления проигрывателя, который называется каждый кадр из love.update:
if not love.keyboard.isDown("a") and not love.keyboard.isDown("d") then
self.Velocity=self.Velocity * Vector2.new(0.95,1)
end
if self.Velocity.Y < -self.maxFallVel then
self.Velocity=Vector2.new(self.Velocity.X,self.maxFallVel)
end
if love.keyboard.isDown("d") and self.Velocity.X<self.maxVel and not love.keyboard.isDown("a") then
self.Velocity = self.Velocity+Vector2.new(.1,0) -- right movement
end
if love.keyboard.isDown("a") and self.Velocity.X<self.maxVel and not love.keyboard.isDown("d") then
self.Velocity = self.Velocity-Vector2.new(.1,0) -- left movement
end
if love.keyboard.isDown("space") and self.hasCollision and not self.Jumped then
if self.Velocity.Y == 0 then
self.Velocity.Y = -30
end
end
self.Position=self.Position+Vector2.new(self.Velocity.X,self.Velocity.Y)
if not self.hasCollision then self.Velocity.Y = self.Velocity.Y - self.Gravity end
При проверке столкновений внутри файла main.lua, который где я установить переменную self.hasCollision в правда или ложь.