Har tänkt att göra ett spel som ska vara en slags blandning mellan The incredibly machine, elastomania och mulle meck typ :P.. Iaf så tänkte jag att mitt första steg skulle vara att göra en fysik motor. Ujujuj, det där är avancerat ;) Jag har dock en känsla av att det här hör till Nicklas J:s favoritämne: matematik! Ni<b>k</b>las, om jag får be! =) Förlåt, jag ska aldrig stava fel till Nikl<b>o</b>s igen :-) Okej, kan tänkta mig det. ambitionen är att göra en motor som ska fungera i ett incredible machine liknande spel (kom på att min första idee inte var så bra). Då börjar du närma dig en lämpligare nivå, den mekaniken är förhållandevis lätt. Kollisionsdetektering är rätt intressant, teorin bakom är ju tämligen lätt men att få lite fart på det i praktiken verkar jobbigt. Så... Jag har en fundigering på om man inte gör så att man delar upp spelytan i ganska stora bitar och sedan varje gång ett objekt ändras på något sätt kontrollerar att objektet finns representerat i alla de bitar där objektet gör intrång. På så sätt borde ju man kunna begränsa sin sökning, eller hur? Eller tänker jag fel där? Nej, det är den naturliga och vanligaste metoden. Japp, flipprarna kan man skita i bara man får själva fysiken. >(jag kommer att använda mig av sprites å inte vektorer) jo, man får ju ha vektorer som utför själva fysiken. Men sen borde man la kunna göra dom onsynliga och lägga en sprite över den. =) >Tips på bra verktyg. Tack.. Men ingen som vet några exempel koder eller guider för fysik eller kollitioner? Den här verkar vettig: Ok tack, http://www.physicsclassroom.com var användbar men det första jag måste greja är ju kollitionsdektering vilket jag inte hittade nåt om.. Du kan ju börja med att kolla in google sökningen som Niklas skickade med och gå igenom de länkarna. Finns mycket där. Okej, men vi gör så här istället: börja du med att skriva programmet och återkom sen när du får problem. Jag har redan sagt vad det är du behöver. Vid varje tidssteg så sker följande:Hjälp med fysik motor till spel.. typ..
Har tänkt att göra detta i java då jag har tänkt att använda det på flera olika slags os (linux och pocket pc.. kanske symbian t.o.m.).
Jag är inte så jätte high på java men skulle ändå tro att jag skulle kunna klara av att göra en fysik motor iaf.
Så här har jag tänkt mig den (går i nian så jag har aldrig läst någonting om matematisk fysik):
Man har en variabel (ett tag sedan jag programerade senast så jag kommer inte riktigt ihåg om det heter variabel. I Qbasic tror jag det heter sub nånting..)
som heter tex Gravity.
Gravitys uppgift är att leta efter rigidbodys och sedan få dom att åka neråt. Den gör detta genom att leta efter (jag kallar mitt rigidbody object för låda) lådans gravity parameter.
Under den så står det hur mycket tex en cm av lådans massa väger (detta för att göra det enkelt om man tex sträcker ut olika bilder osv)
När Gravity har hittat lådans gravity parameter så tar den dens vikt * dens massa. på så sätt så räknar den ut hår hårt den ska falla.
När väl lådan träffar en solid object så stannar den upp genom att stutsa (man får även ange saker som tex studs och friktion under lådans gravity parameter).
Det jag har skrivit hittils skulle jag nog kanske kunna klara av själv även om jag är säker på att man inte räknar ut hur fort en sak faller på det sättet.
Det svåra ligger i rotationen på saker. Är lådan lite sne när den faller så kommer den inte vara still för en den ligger med en hel kant mot marken.
Det är det som jag inte har någon aning om hur man ska göra.
Så frågan är alltså: hur låter det som jag beskrivit hittils skulle det fungera, hur fixar man rotationer på olika saker och nån som vet något bra exempel på nåt liknande? gärna nåt jag kan öppna och titta på i notepad då det är det jag kör med ;)..
Är det någon som vet nåt bra program att programera i java med förrsten?Sv: Hjälp med fysik motor till spel.. typ..
För det första är t.ex. en enkel rotation hyffsat jobbig, särskilt om den ska flyta på bra. Att sedan räkna ut en massa annan fysik på snurrande saker är ännu värre :)
Jag skulle nog tippa på att du sänker ambitionsnivån en aning, testa att skriva en motor utan något snurrande först. Det blir en himla massa annat att ta i beräkning sedan nämligen... :/Sv: Hjälp med fysik motor till spel.. typ..
Jo, jag är ganska övertygad om att du har tagit dig vatten över huvudet, inte för att jag inte tror på din förmåga, utan på att det är ett ganska tungt projekt att börja med om man varken är speciellt van vid mekanik (det är det du pratar om) eller programmering.
Med tanke på att du skriver "vikt*massa" så är det nog bäst att du skaffar en bra bok i nybörjarmekanik och lär dig det ordentligt först. Tyvärr är det inte så lätt, eftersom du troligtvis kommer behöva vektorer, och då måste du lära dig linjär algebra först...
Är grymt trött just nu, så jag orkar inte skriva någon förklaring, men om du verkligen är säker på att du vill försöka dig på det, så kan jag ge lite tips om vad du bör göra.Sv: Hjälp med fysik motor till spel.. typ..
Sv: Hjälp med fysik motor till spel.. typ..
Kan tänka mig att rotationer är svårt då mina tidigare försök har vart rätt misslyckade. Men om man skippar rotationer och skulle göra ett enkelt flipper spel som test bara för fysiken (så att kulan studsar korrekt från olika vinklar) skulle det kunna vara rätt enkelt då?
EDIT: ifall nån undrade så ska den bara vara 2dSv: Hjälp med fysik motor till spel.. typ..
Det som är krångligt är
1. Mekaniken hos studsar (de kan nämligen vara olinjära, men det är nog ganska lugnt)
2. Kollisionsdetektering - inte så besvärligt, men det är lätt att tänka fel.
3. Eventuella "flipprar". Där har du den jobbigaste biten, men den delen kan du ju strunta i först.Sv: Hjälp med fysik motor till spel.. typ..
Sv: Hjälp med fysik motor till spel.. typ..
Sen använder man en ganska enkel princip för att inte få "glapp" i rörelsen:
Man har hela tiden en vektor eller två tal som beskriver "nästa steg"; typ xstep, ystep. Sen kollar man vilka rutor kulan kan tänkas passera under detta enstaka steget (oftast bara en, därför kan man ha ganska små rutor).
Sen tar man reda på om en studs sker, och i så fall mot vilken yta.
När man är helt klar på det så kan man beräkna hur mycket kulan skulle ha rört sig utan hinder, och utifrån det räkna ut hur långt ut den ska åka.Sv: Hjälp med fysik motor till spel.. typ..
Tex så skulle man ju kunna göra en liten kul bana eller liknande. Kollision är ganska svårt det med, har bara gjort det en gång i ett platforms spel jag gjorde i qbasic. Gjorde den med ascii och gick till såhär:
jag kallar gubben man står "G" och marken "."
Principen var att om "G" var på en punkt (kommer inte riktigt ihåg hur jag fick den att veta det) så gick den till den raden den var innan punkten.
Alltså ungefär såhär: If "G" = row "." then row $gammal (då gammal är vart han var steget innan)
Men nu är det ju java som gäller. Så är det någon som vet nån bra guide, eller nåt bra kod exempel på fysik eller kollitionsdektering (jag kommer att använda mig av sprites å inte vektorer)Sv: Hjälp med fysik motor till spel.. typ..
Du missförstår vad vektorer är, en vektor är ett av matematikens mest fundamentala begrepp, du kommer behöva det när du gör något mer avancerat.
Och angående kollisioner - som sagt, det är betydligt krångligare i en vettig grafisk miljö. Men jag orkar inte börja förklara hur kulan ska röra sig just nu. Jag kan säga så här; du behöver veta följande saker om kulan:
Kulans position
Kulans hastighet
Kulans acceleration, vanligtvis "g", men i datorvärlden spelar det ingen roll.
Sen måste du hålla reda på alla olika kanter kulan kan studsa mot, dvs slutpunkt och startpunkt.Sv: Hjälp med fysik motor till spel.. typ..
Hastigheten på kulan är la ondödig om den inte ska studsa? accelration med va?
Men iaf nån som vet nån bra kod som man kan kika på för det? eller nån tutorial?
Sen så finns det något bra vertyg som förenklar att skriva i java eller är det bara notepad som gäller?Sv: Hjälp med fysik motor till spel.. typ..
Du missförstår fortfarande vad en vektor är. Du kan tänka på en vektor som ett tal, fast med riktning. Se det som en pil, t.ex.
Du kan beskriva en vektor antingen med en vinkel och längd (en vektor med längden 3 och vinkeln 35 grader), eller som en x- och en y-koordinat (en vektor med x-komponent 3 och y-komponent 4).
Man kan använda en vektor för att beskriva en position, eller en hastighet, etc.
Sen att du har en grafisk representation är en helt annan grej, det har inget med det att göra.
>Hastigheten på kulan är la ondödig om den inte ska studsa? accelration med va?
Nej, position och hastighet är direkt nödvändiga. Acceleration brukar vara konstant och bara riktad i y-riktningen.
>Sen så finns det något bra vertyg som förenklar att skriva i java eller är det bara notepad som gäller?
När jag gick en kurs i Java tipsades vi om "Grasp", men det finns förmodligen bättre. Sök på google eller download.comSv: Hjälp med fysik motor till spel.. typ..
hela utvecklingsmiljöer:
Eclipse www.eclipse.org
Netbeans www.netbeans.org <- använder jag själv.
JBuilder www.borland.com
Enklare editors med highlightning:
EditPlus www.editplus.com
UltraEdit www.ultraedit.com
JpadPro http://www.modelworks.comSv: Hjälp med fysik motor till spel.. typ..
Sv: Hjälp med fysik motor till spel.. typ..
http://www.physicsclassroom.com/Class/1DKin/1DKinTOC.html
Här lär du ju hitta något:
http://www.google.se/search?q=collision+detection&ie=UTF-8&oe=UTF-8&hl=sv&btnG=Google-s%C3%B6kning&meta=
annars kan jag återkomma och förklara lite noggrannare.Sv: Hjälp med fysik motor till spel.. typ..
Nån som vet nåt mer?Sv: Hjälp med fysik motor till spel.. typ..
/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nuSv: Hjälp med fysik motor till spel.. typ..
1. Positionen förändras. x=gamla x + tidssteg*hastighet i x-led och motsvarande för y
2. Hastigheten förändras. Hastigheten i y-led=gamla hastigheten - gravitation*tidssteg.
Fixar du inte det tror jag att du bör satsa på lite mer grundläggande programmering först.