Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako programirati animaciju?

[es] :: GameDev - Razvoj Igara :: Kako programirati animaciju?

[ Pregleda: 2445 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Stranger2
Stranger2

Član broj: 143429
Poruke: 2572
212.91.112.*

Sajt: www.videomajstor.com


+43 Profil

icon Kako programirati animaciju?02.09.2007. u 15:00 - pre 202 meseci
Ne pravim igru ali mi treba slična stvar. Jedan objekat treba da se kreće po ekranu i pri tome reaguje na nekoliko okolnosti na koje se upravlja pritiskom na tastere. Sve treba da izgleda tečno kao film da nema trzanja i da se brzina objekta ne menja bez obzira na složenost frejma i na snagu kompjutera...
Probavao sam da smislim nekoliko načina ali imam osećaj da se to radi drugačije. Pretpostavljam da developeri igara već imaju nekoliko uhodanih metoda. Da li neko od prgramera može da mi objasni teoretski kako treba da ide tok programa za animaciju u video igri? Ako ima više metoda volio biha da čujem pa da vidim šta će odgovarati za moje potrebe.
 
Odgovor na temu

lammas
djak

Član broj: 142239
Poruke: 66
213.244.208.*



Profil

icon Re: Kako programirati animaciju?03.10.2007. u 16:54 - pre 201 meseci
Ja mogu da ti pomognem,samo u jeziku Java,evo ti kod za jednu animaciju
Code:

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Color;

public class Neko extends java.applet.Applet
    implements Runnable {

    Image nekoPics[] = new Image[9];
    Image currentImg;
    Thread runner;
    int x;
    int y = 50;

    public void init() {
        String nekoSrc[] = { "right1.gif", "right2.gif",
            "stop.gif", "yawn.gif", "scratch1.gif",
            "scratch2.gif","sleep1.gif", "sleep2.gif",
            "awake.gif" };

        for (int i=0; i < nekoPics.length; i++) {
            nekoPics[i] = getImage(getCodeBase(),
                "images/" + nekoSrc[i]);
        }
    }

    public void start() {
        if (runner == null) {
            runner = new Thread(this);
            runner.start();
        }
    }

    public void stop() {
        runner = null;
    }

    public void run() {
        setBackground(Color.white);
        // run from one side of the screen to the middle
        nekoRun(0, size().width / 2);
        // stop and pause
        currentImg = nekoPics[2];
        repaint();
        pause(1000);
        // yawn
        currentImg = nekoPics[3];
        repaint();
        pause(1000);
        // scratch four times
        nekoScratch(4);
        // sleep for 5 "turns"
        nekoSleep(5);
        // wake up and run off
        currentImg = nekoPics[8];
        repaint();
        pause(500);
        nekoRun(x, size().width + 10);
    }

    void nekoRun(int start, int end) {
        for (int i = start; i < end; i += 10) {
            x = i;
            // swap images
            if (currentImg == nekoPics[0])
                currentImg = nekoPics[1];
            else currentImg = nekoPics[0];
            repaint();
            pause(150);
        }
    }

    void nekoScratch(int numTimes) {
        for (int i = numTimes; i > 0; i--) {
            currentImg = nekoPics[4];
            repaint();
            pause(150);
            currentImg = nekoPics[5];
            repaint();
            pause(150);
        }
    }

    void nekoSleep(int numTimes) {
        for (int i = numTimes; i > 0; i--) {
            currentImg = nekoPics[6];
            repaint();
            pause(250);
            currentImg = nekoPics[7];
            repaint();
            pause(250);
        }
    }

    void pause(int time) {
        try {
            Thread.sleep(time);
        } catch (InterruptedException e) { }
    }

    public void paint(Graphics screen) {
        if (currentImg != null)
            screen.drawImage(currentImg, x, y, this);
    }
}

lammas
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1342
218.1.28.*

ICQ: 14293955
Sajt: https://github.com/milost..


+48 Profil

icon Re: Kako programirati animaciju?04.10.2007. u 04:41 - pre 201 meseci
Citat:
Stranger2: Sve treba da izgleda tečno kao film da nema trzanja i da se brzina objekta ne menja bez obzira na složenost frejma i na snagu kompjutera...

Kad ovo završiš, javi i nama, svi bi voleli da znamo - ako ne patentiraš pre toga, naravno :)
 
Odgovor na temu

StefanJer91
Stefan Jeremic
Beograd

Član broj: 121923
Poruke: 160
*.kalik.info.



Profil

icon Re: Kako programirati animaciju?04.10.2007. u 08:18 - pre 201 meseci
Citat:
Stranger2: Da li neko od prgramera može da mi objasni teoretski kako treba da ide tok programa za animaciju u video igri? Ako ima više metoda volio biha da čujem pa da vidim šta će odgovarati za moje potrebe.


Da, ima vise metoda, ja cu da ti objasnim kako ja radim: Umesto veceg broja slika koje bi prestavljale animaciju, koristim jednu na kojoj se na istoj udaljenosti nalaze sve manje slike. Napravim funkciju koja ce u zavisnosti od parametra velicine pravougaonika koji sam joj prosledio da vraca sledeci sprite. Sad jedino jos namestis da se taj pomeraj vrsi u odredjenom vremenskom periodu (npr. svaka nova slika na 0.3 sec). Nadam se da si razumeo...
The earth teaches us more about ourselves than all the books. Because it resists us. Man discovers himself when he measures himself against the obstacle.
 
Odgovor na temu

[es] :: GameDev - Razvoj Igara :: Kako programirati animaciju?

[ Pregleda: 2445 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.