Distance ongelma

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
FuJi
Member
Posts: 70
Joined: Tue Aug 28, 2007 3:09 pm

Distance ongelma

Post by FuJi »

Jos minulla on typeillä luotu vihu ja haluan, että jos ukko on lähellä vihua vihu tulee ukkoa kohti, mutta jos ukko on vihusta liian kaukana vihu ei lähde liikkeelle.

Tämä koodi ei toimi, koska kaikki vihut tulevat pelaajaaa kohti vaikka ne olisivat kaukana pelaajasta.

Code: Select all

If Distance (ukko,ukko,vihu\obj,vihu\obj) < 200 Then  
    PointObject vihu\obj, ukko
    MoveObject vihu\obj, 1
EndIf
Miten tämän saa toimimaan?
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Distance ongelma

Post by Harakka »

Distance()-funktio vaatii kordinaatteja parametreiksi eikä objekteja. Käytäppä Distance2():sta.

Code: Select all

If Distance2(ukko,vihu\obj) < 200 Then 'tee jotain
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
FuJi
Member
Posts: 70
Joined: Tue Aug 28, 2007 3:09 pm

Re: Distance ongelma

Post by FuJi »

Entäs, kun kahden objektin kohdatessa kummatkin pitäisi poistaa.
Tarkoitan siis tätä:

Code: Select all

if objectsoverlap(luoti\obj,vihu\obj) then 
    delteobject luoti\obj
    delete luoti
Endif
Ja vihulla tietysti sama:

Code: Select all

if objectoverlap(vihu\obj,luoti\obj) then 
    deleteobject vihu
    delete vihu
Endif 
Tästä tulee MAV miten tämän sitten voi toteuttaa?
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: Distance ongelma

Post by Dibalo »

Code: Select all

    if objectsoverlap(luoti\obj,vihu\obj) then
        delteobject luoti\obj
        delete luoti
        deleteobject vihu\obj
        delete vihu
    Endif
The darkest spells can be found from
http://tunkkaus.blogspot.fi
FuJi
Member
Posts: 70
Joined: Tue Aug 28, 2007 3:09 pm

Re: Distance ongelma

Post by FuJi »

Dibalo wrote:

Code: Select all

if objectsoverlap(luoti\obj,vihu\obj) then
    delteobject luoti\obj
    delete luoti
    deleteobject vihu\obj
    delete vihu
Endif
MAV.

Code: Select all

If KeyDown(cbKeyRControl) Then    
    luoti.AMMUS = New(AMMUS)
    luoti\obj=CloneObject(pati)
    CloneObjectPosition luoti\obj,ukko                
    CloneObjectOrientation luoti\obj,ukko
    If ObjectsOverlap(luoti\obj,vihu\obj) Then
        DeleteObject luoti\obj
        Delete luoti
        DeleteObject vihu\obj
        Delete vihu
    EndIf
EndIf

For luoti.AMMUS = Each AMMUS
    MoveObject luoti\obj,6       
Next luoti
iTKEVAnAKKI
Advanced Member
Posts: 335
Joined: Tue Aug 28, 2007 3:55 pm
Location: Siellä jossain

Re: Distance ongelma

Post by iTKEVAnAKKI »

Code: Select all

    if objectsoverlap(luoti\obj,vihu\obj) then
        delteobject luoti\obj
        delete luoti
        deleteobject vihu\obj
        delete vihu
  exit
    Endif
eli silmukasta täytyy purkautua :D

Ja sun pitää laittaa tuo törmäystarkistus erikseen For-Next looppiin.

Code: Select all

For vihu.VIHUT=Each VIHUT
Next vihu
Projektit:
Joku projekti meneillään... Mitähän siitäkin tulee ;)
User avatar
elmo123
Active Member
Posts: 153
Joined: Sun Sep 09, 2007 4:19 pm

Re: Distance ongelma

Post by elmo123 »

Jos päivität vihuja, pistä vihujen poisto viimeiseksi, mutta jos päivität luoteja niin laita luotien poisto viimeiseksi. Ja muista:

Code: Select all

For vihu.VIHUT = Each VIHUT
    //ETTEI TULE MAVIA MUISTA KATSOA VIHUJA KATSOTTAESSA MYÖS PATEJA!!!
    For pati.AMMUKSET = Each AMMUKSET
        If ObjectsOverlap(vihu\obj,pati\obj,3) Then
            DeleteObject pati\obj
            Delete pati
            collide=1
        EndIf
    Next pati
    If collide Then DeleteObject vihu\obj:Delete vihu
Next vihu
Kiinnostuin pelien tekemisestä ennen 1. luokkaa.
Sitten 3. luokalla tuli CB. Ja siitä se alkoi.

Blender! TF2! CB! Game Maker! Nokia-mollaus! Kitaransoitto! Breakdance! MadTracker! Minecraft!
Post Reply