2016-01-18 2 views
-2

Я строю клонированный клоун для птиц, я ЛЮБЛЮ 2D, и все, что у меня есть, это птица, хлопающая, с фоном позади нее. Я хотел бы сделать так, когда птица коснется земли, игра заканчивается или показывает игру поверх экрана. И я не могу найти хороший способ сделать это, не используя внешние библиотеки. Есть ли этому решение? У меня есть земля как отдельный образ, если это помогает или имеет значение. Я использую последнюю версию LOVE 2D framework.Love2D Collision?

Спасибо! Я знаю, что кто-то даст мне ответ, который мне нужен!

+1

Как сохранить позицию птицы? Справедливо просто сравнить текущую координату y с координатой y на земле. Если птица находится на одной или более высокой координате (т. Е. Под землей), вам следует перейти на конечный экран. Или ваша проблема в том, что вы не знаете, как перейти на другой экран? Можете ли вы показать нам, что вы пробовали до сих пор? Что и не сработало? –

ответ

0

Я использую rects в своих играх.

if (bird.x <= tube.x and bird.y <= tube.y and bird.x + bird.width >= tube.x and bird.y + bird.height >= tube.y) then 
    {...code...} 

if (bird.x <= tube.x and bird.y >= tube.y and bird.x + bird.width >= tube.x and bird.y <= tube.y + tube.height) then 
    {...code...} 

if (bird.x >= tube.x and bird.y <= tube.y and bird.x <= tube.x + tube.width and bird.y + bird.height >= tube.y) then 
    {...code...} 

if (bird.x >= tube.x and bird.y >= tube.y and bird.x <= tube.x + tube.width and bird.y <= tube.y + tube.height) then 
    {...code...} 
+0

Спасибо! Это должно очень помочь! –

0

Я использую этот простой код, частично взятый с форумов love2d. Вот код и под функцией, как вы его используете. (Может быть повторно использован для многих объектов)

-----------------------Code------------------------- 
function colMulti(x1, y1, w1, h1, x2, y2, w2, h2) 
    return x1 < x2+w2 and 
      x2 < x1+w1 and 
      y1 < y2+h2 and 
      y2 < y1+h1 
end 

-----------------------Usage------------------------- 
x1, y1, w1, h1 = bird.x, bird.y, bird.img:getWidth(), bird.img:getHeight() 
x2, y2, w2, h2 = ground.x, ground.y, ground.img:getWidth(), ground.img:getHeight() 

if colMulti(x1, y1, w1, h1, x2, y2, w2, h2) then 
    —Execute bird death here 
end 

Существует гораздо больше, сложнее и более эффективный метод для обнаружения столкновений, но вы должны узнать о тонне встроенных физического движка для love2d. (Не похоже, что вам нужно это ты.)

Подробнее по другому пути: https://love2d.org/wiki/love.physics