[TUT]Kolizija

Sadržaji namijenjeni potpunim početnicima u svijetu programiranja i/ili razvoja igara.
Post Reply
User avatar
Mihael
Thunder Snail
Posts: 1386
Joined: Thu Aug 13, 2009 3:06 pm
Smallest prime number bigger than 20: 23

[TUT]Kolizija

Post by Mihael » Sun Mar 21, 2010 6:59 am

Ovaj colliosion je najjednostvniji blik kolizije, a radi na principu da provjeri jesu li točke nekog lika u točkama drugog. U ovom primjeru likova za koje ćemo pokazivati koliziju biti će dimenzija 32*32. Prvo trebamo znati kako određujeme koordinate nekog lika na slici. Koordinate se određuju na temelju prvog pixela na nekom liku, naprimjer:
Image
Zatamnjeni lik ima koordinate (8,7)
Pošto sigurno radimo super-mario style game, moramo provjeriti dali mario stoji na podu:

Image
Image

Ovdje je očito da stoji, ali mi moramo to napisati kodom. sivi kvadrat će piti objekt player a pod će biti objekt floor.

Code: Select all

player.x = 1
player.y = 1
player.gravity = 0.1  # zbog jednostavnosti ovdje ćemo koristiti gravitaciju koja ide striktno po formuli y = y + gravity
pošto je player odmah na početku slike on ima koordinate prve točke, (1,1). E i kako da mi sad provjerimo dali se lik dodiruje sa poglogom? Jednostavno uz jedan if ali prije toga moramo znati koje su koordinate poda,

Code: Select all

pod.x = 1
pod.y = 33
sada idemo provjeriti dali se kvadrati dodiruju:

Code: Select all

if player.y + 33 >= pod.y:
    player.gravity = 0
Zašto + 33? ako bi stavili + 32 player bi malo preklapao pod što mi neželimo.
Isto vrijedi i za provjeru kolizije lijevo i desno uz malo drugačije brojeve.

LIJEVO

Code: Select all

if player.x - 1 <= zid.x + 32: # umjesto ovaj 32 ide veličina zida
    player.speed_left = 0
DESNO

Code: Select all

if player.x + 33 >= zid.x:
    player.speed_right = 0
Ovaj tutorial sam pokušao pojednostaviti koliko god sam mogao....

User avatar
SupermanRAA
Posts: 122
Joined: Tue Jan 26, 2010 1:19 am
Smallest prime number bigger than 20: 23

Re: [TUT]Kolizija

Post by SupermanRAA » Sun Mar 21, 2010 8:07 pm

ovo je zapravo kul za totalne pocetnike.. :tup: na tutu
http://senselesspoet.blog.hr/ -> malo moe poezije :D

User avatar
Mihael
Thunder Snail
Posts: 1386
Joined: Thu Aug 13, 2009 3:06 pm
Smallest prime number bigger than 20: 23

Re: [TUT]Kolizija

Post by Mihael » Sun Mar 21, 2010 8:20 pm

to sam napravio zato jer sam vidio dosta upita na tu temu... :)

User avatar
EmP
Veliki brat malih trokuta
Posts: 498
Joined: Tue Sep 01, 2009 10:14 pm
Smallest prime number bigger than 20: 23
Location: Zagreb
Contact:

Re: [TUT]Kolizija

Post by EmP » Mon Mar 22, 2010 3:40 pm

Postoji jos jednostavnija metoda: kruznice. Preklapanje kruznica je daleko najjednostavnje za ispitat, sa 1 if. S jedne strane otporne su na rotaciju s druge strane treba ih puno da se opise nest sto nije okruglo (kvadrat ili tanka linija).
Nexus 64213 blog - IKON: moja verzija JSONa
Stareater blog - lijepe slike kak napreduje kod

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest