如何让一个矩形跳跃?(Love2d)

我可能有点愚蠢,但是我遇到了困难。我通常能找到一些代码示例,但是它们只会让我更加困惑。不幸的是,这方面没有什么好的教程。我已经使用Lua语言一年了,所以我有一些经验。非常感谢你的帮助!

基本上,我想学习如何让一个矩形跳起来然后再下落。

点赞
用户7228869
用户7228869

对于你控制的单个方块,你需要存储它的重力并找出一个好的加速度。

currentGravity = 0;
gravity = 1;

然后在循环中,您必须使用某些碰撞检测来检查它是否在地面上。您希望将重力加速度添加到当前的重力中:

currentGravity = currentGravity + gravity

然后,将其添加到块的当前y轴:

YAxis = YAxis + currentGravity

一旦着陆,请确保将重力设置为0。还要确保不断将其设置为0,以确保您不会穿过地面(因为您不管发生什么都会添加到重力中)。

if not inAir() then
    currentGravity = 0
end

当然,要跳跃,将currentGravity设置为负数(例如-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

2016-12-02 03:04:31