2016-11-30 51 views
-2

我可能是愚蠢的或某事。但是,我對此很難過。我通常會找到代碼的例子,但它只是讓我困惑。不幸的是,這沒有任何好的教程。我一直在使用Lua近一年,所以我有點經驗。幫助將非常感激!製作矩形跳躍? (Love2d)

基本上我想學習如何讓矩形跳起來然後再往下走。

+0

做長方形跳躍是什麼意思?物理和所有這一切?加速度,重力和所有這些東西?剛剛起來還是朝着任何方向?提供一個草圖或更多的信息你想達到什麼。你花了3條線來解釋你找不到的東西,但不是你想知道的東西的一條線...... – Piglet

+0

我的歉意。基本上我想學習如何讓一個矩形跳起來,然後回落。字面上只是簡單的跳躍。 – Probix

+0

什麼阻止你閱讀手冊? https://love2d.org/wiki/Tutorial:Baseline_2D_Platformer#Part_4:_Jumping – Piglet

回答

1

對於你控制的單個模塊,你基本上需要存儲它的重力,並找出一個很好的加速度。

currentGravity = 0; 
gravity = 1; 

然後在循環中,您必須使用一些碰撞檢測來檢查它是否在地面上。你想重力加速度添加到currentGravity:

currentGravity = currentGravity + gravity 

然後,你把它添加到塊的當前y軸:

YAxis = YAxis + currentGravity 

一旦你的土地,確保重力設置爲0。此外,一定要保持它的設置爲0,以確保您不會通過地面下降(因爲你不斷增加重力不管是什麼。)

if not inAir() then 
    currentGravity = 0 
end 

,當然,跳,設置currentGravity到消極麻木ER(如20)(。如果這是你如何取得的重力工作)

這裏有一個碰撞檢測功能我爲Love2D提出:

function checkCollision(Pos1,Size1,Pos2,Size2) 

    local W1,H1,W2,H2 = Size1[1]/2,Size1[2]/2,Size2[1]/2,Size2[2]/2 

    local Center1,Center2 = {Pos1[1]+W1,Pos1[2]+H1},{Pos2[1]+W2,Pos2[2]+H2} 

    local c1 = Center1[1]+(W1) > Center2[1]-W2 
    local c2 = Center1[1]-(W1) < Center2[1]+W2 
    local c3 = Center1[2]+(H1) > Center2[2]-H2 
    local c4 = Center1[2]-(H1) < Center2[2]+H2 

    if (c1 and c2) and (c3 and c4) then 
     return true 
    end 
    return false 
end 

它假定你給它是塊的中心位置。如果盒子旋轉,它將無法工作。你必須弄清楚如何使它與牆壁等一起工作。是的,這很醜,因爲它很古老。 :p