Schuss Kollision

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Blitzprogger

Betreff: Schuss Kollision

BeitragDo, Mai 13, 2010 11:19
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Forensuche habe ich nicht das Gewünschte gefunden.
Ich möchte ein Projektil, das in Ego-Perspektive abgefeuert wird mit der Umwelt kollidieren lassen.
Das Abfeuern funktioniert auch solange die Kollision inaktiv ist, ist sie aber aktiv, so kann ich das Projektil nur noch an bestimmten Stellen auf der Karte wunschgemäss abfeuern. An den anderen ist das Projektil gar nicht zu sehen wenn es abgefeuert wird.
ErstellungsCode: [AUSKLAPPEN]
Case 0 ;Feuerball
         If atr# (atrpoints,playerid) >= 10 Then
            atr# (atrpoints,playerid) = atr# (atrpoints,playerid) - 10
            shot.shottype = New shottype
            shot\mesh = LoadMesh ("Data\Gfx\Effects\fireball.b3d")
            shot\plid = playerid
            shot\talentid = talentchoice
            shot\time = MilliSecs ()
            shot\col = spellcolid
            spellcolid = spellcolid + 1
            EntityType shot\mesh,shot\col     ;Vielleicht liegt das Problem hier ?
            EntityRadius shot\mesh,0.25
            Collisions shot\col,worldcol,2,2
            PositionEntity shot\mesh,EntityX# (pl(playerid)),EntityY# (pl(playerid))+1.5,EntityZ# (pl(playerid))
            RotateEntity shot\mesh,EntityPitch (camera),EntityYaw (camera,1),0
            MoveEntity shot\mesh,0,0,1
         EndIf

SchleifenCode: [AUSKLAPPEN]
Case 0 ;Feuerball
         For shot.shottype = Each shottype
            If shot\plid = playerid Then
               MoveEntity shot\mesh,0,0,0.1
               cols = CountCollisions (shot\mesh)
               If cols <> 0 Then
                  FreeEntity shot\mesh
                  Delete shot.shottype
               EndIf
               EndIf
            EndIf
         Next


mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink
 

Stani

BeitragDo, Mai 13, 2010 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie ich das sehe liegt der Fehler daran,dass wenn eine Kugel von dir mir der Map collidiert,der ganze kopierte Mesh von allen kommenden Kugel gelöscht wird.
Ich würde dir vorschlagen,dass du ein String erstellst und den als coutcollisions machst.Wenn die Kugel kollidiert,soll er den String wieder auf 0 stellen.


Edit:Hab dein Code nochmal angeschaut.Du musst ein Kugelmesh in deinen Typs erstellen und den bei jedem Schuss von deinem Mesh neu kopieren .Da du sonst den ganzen Mesh löschst und dan weiß er nicht woher er die Kugel nehmen soll.

Beispiel:
Code: [AUSKLAPPEN]


if mousedown(1) Then
For Schuss=Each Schuss
Schuss\Mesh =copymesh(Vorlage)
moveentity Schuss\Mesh 0,0,1
.....





Und nochwas:Man kann Types meines Wissens nach nicht einfach so aufrufen.Man muss z.b schreiben For Schuss=Each Schuss und dan alles abarbeiten.



Ich hoffe ich sag jetzt nichts falsches^^

Mfg Stani

Blitzprogger

BeitragDo, Mai 13, 2010 11:49
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denke daran kann es nicht liegen denn wenn ich an ebendiesen Stellen schiesse, an denen es aus irgendeinem Grund geht, kollidiert auch zuerst der eine Zauben und erst später der Nächste ohne Probleme. Auch hat jeder Zauber ja ein eigenes Mesh das gleich aus einem Ordner geladen wird, jedes einzeln. Confused
Das mit den Types sollte stimmen: Code: [AUSKLAPPEN]
For shot.shottype = Each shottype


mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Xeres

Moderator

BeitragDo, Mai 13, 2010 11:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach dem ganzen Positionierungskram ResetEntity - sonst kann es sein, das der Schuss schon mal auf dem Weg zu seinem Startpunkt mit irgendwas Kollidiert ist.
Und bei dem hier...
Code: [AUSKLAPPEN]
shot\col = spellcolid
spellcolid = spellcolid + 1
EntityType shot\mesh,shot\col     ;Vielleicht liegt das Problem hier ?
...bin ich mir nicht ganz sicher, was du erreichen möchtest. Du erstellst damit endlos viele Kollisionsgruppen die BlitzBasic überwachen muss. Eine Konstante (eine für den Schuss, eine für die Welt) sollte da vollkommen ausreichen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Blitzprogger

BeitragDo, Mai 13, 2010 12:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank! Very Happy
Mit Resetentity funktioniert alles!
Ihr seid toll Cool

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group