Toon posts:

Flash rpg spelletje met vijand

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey,

ik heb een klein rpg'tje en wil dat er een vijand is,
De persoon zelf heet: link
en de vijand die ik heb heet: boe

Ze staan beide in de movieclip: sprites

Nu wil ik dat de vijand achter de persoon aaloopt, dat hij hem achtervolgd, en dan heb ik deze code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
speed = 4;


    if(this.sprites.link._x > this.sprites.boe._x) {
        tellTarget (this.sprites.boe) {
            _x += speed;
        }
    } if(this.spritest.link._x < this.sprites.boe._x) {
        tellTarget (this.sprites.boe) {
            _x -= speed;
        }
    } if(this.sprites.link._y > this.sprites.boe._y) {
        tellTarget (this.sprites.boe) {
            _y += speed;
        }
    } if(this.sprites.link._y < this.sprites.boe._y) {
        tellTarget (this.sprites.boe) {
            _y -= speed;
        }
    }


Er gebeurd alleen niks, wie kan mij helpen? Want hetlukt me niet,
Ik kan het nergens vinden op internet en ook niet in tutorials,
Bedankt, Koen Beemsterboer

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 20-01 22:02

Yoozer

minimoog

Verwijderd schreef op vrijdag 06 oktober 2006 @ 15:30:
Nu wil ik dat de vijand achter de persoon aaloopt, dat hij hem achtervolgd, en dan heb ik deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
speed = 4;

    if(this.sprites.link._x > this.sprites.boe._x) {
        tellTarget (this.sprites.boe) {
            _x += speed;
        }
    } if(this.spritest.link._x < this.sprites.boe._x) {
        tellTarget (this.sprites.boe) {
            _x -= speed;
        }
    } if(this.sprites.link._y > this.sprites.boe._y) {
        tellTarget (this.sprites.boe) {
            _y += speed;
        }
    } if(this.sprites.link._y < this.sprites.boe._y) {
        tellTarget (this.sprites.boe) {
            _y -= speed;
        }
    }


Er gebeurd alleen niks, wie kan mij helpen?
Doordat je < en > gebruikt is er geen keuze mogelijk voor de situatie waarin het gelijk is; dat zou mogelijk problemen kunnen geven. Deze optie moet je ook afvangen; wat als de x en y gelijk zijn aan elkaar? Je zou het eventueel makkelijker kunnen maken door een switch te gebruiken; geef de situatie waarin link._x > dan boe._x een zinnige naam, kijk of 'ie negatief, positief of nul is en bouw daarmee je switch. Nog beter zou zijn als je een klasse genaamd "Positie" zou bouwen met coordinaten en dan de logica (ligt een punt lager, hoger, rechts of links van een ander punt) in de klasse zelf zou bouwen. In dat geval hoef je maar op 1 plaats in je code te vergelijken/rekenen, en je speler/vijandobject heeft in de eigenschappen dan een object van de klasse Positie zitten. Dan zijn ook zinnigere namen mogelijk - niet meer x en y en groter en kleiner maar Lower, Higher, Left en Right.

Wat achtervolgen betreft, hiervoor zijn meerdere oplossingen. Dit ligt ook aan je speelveld. Zit je met een grid-achtig systeem waarover een sprite alleen 4 richtingen uitkan of heb je vrije beweging? Achtervolgen is niks anders dan er voor zorgen dat de afstand tussen de speler en de vijand zo klein mogelijk wordt; deze mag alleen groter worden als er een obstakel staat.

De naam van wat je zoekt is mogelijk het "Chase algorithm".
Want hetlukt me niet, Ik kan het nergens vinden op internet en ook niet in tutorials
Natuurlijk niet. Je kunt er niet vanuit gaan dat een mogelijke tutorial gelijk de goede oplossing biedt voor jouw probleem.

Probeer de aanwijzingen in http://board.flashkit.com...e/index.php/t-408567.html eens en zoek op de juiste term.
Bedankt, Koen Beemsterboer
Je hoeft je bericht niet te ondertekenen; je naam staat er toch al naast ;). (Zie ook de FAQ)

[ Voor 10% gewijzigd door Yoozer op 06-10-2006 15:52 ]

teveel zooi, te weinig tijd


Verwijderd

Topicstarter
Hey, bedankt boor je reactie

Ik ben nog maar beginner met flash en snap niet alles wat je vertelde,
Dat ik ook iets moet maken voor dat hij op dezelfde plek staat is handig ;) dankje, maar dat is niet het probleem dat er niks gebruikt. Want ze staat echt op een andere plek en toch verplaatst hij zich niet.
(Ook kan hij op dit moment nog door de muren heen, dat weet ik, maar ik verander dat later wel, eerst de achtervolging)

Ik zal even de .fla op internet zetten, dat is misschien iets duidelijker.
http://www.theschoolcriminals.com/


Het is al opgelost met de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
speed = 1;
this.sprites.boe.onEnterFrame = function(){
        if(this._parent.link._x > this._x) {
                this._x += speed;
        } if(this._parent.link._x < this._x) {
                this._x -= speed;
        } if(this._parent.link._y > this._y) {
                this._y += speed;
        } if(this._parent.link._y < this._y) {
                this._y -= speed;
        }
}

[ Voor 29% gewijzigd door Verwijderd op 06-10-2006 16:34 ]


Verwijderd

Even wat betreft je code... ik ben geen goede flash programmeur, maar het lijkt me dat wanneer je een "functie defineerd", je hem beter een naam kan geven, en hem vervolgens via deze naam aanroept. Als je hem dan later weer nodig hebt, kun je hem hergebruiken!