2017-01-25 118 views
1

我想在love2D中做一個簡單的平臺遊戲。目前,我的球員隊伍中有其他的東西(碰撞處理班,水平班等)。與重力和碰撞跳

我遇到的主要問題是跳躍。我無法讓它正常工作。

當我跳起來時,玩家被拉得太快而無法實際跳躍。這是爲什麼發生?這是從ROBLOX移植過來的代碼,在ROBLOX Studio中,跳轉通常是正常的。

這是被稱爲從love.update每一幀的播放器的更新功能中:在這裏我設置變量self.hasCollision到

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文件中的衝突,這是對或錯。

回答

1
if self.Velocity.Y < -self.maxFallVel then 
    self.Velocity=Vector2.new(self.Velocity.X, -self.maxFallVel) -- minus! 
end 
... 
-- multiply by dt 
self.Position=self.Position+Vector2.new(self.Velocity.X,self.Velocity.Y)*dt 
if not self.hasCollision then 
    self.Velocity.Y = self.Velocity.Y - self.Gravity*dt 
end