3D Feuer

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Lunatix

Betreff: 3D Feuer

BeitragDi, Mai 17, 2005 11:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leutz!
Ich bin Grad dabei einen EGO-Shooter zu Proggen, kann schon schiessen(MP5) und granaten werfen, Zombies Laufen auch schon rum
Die kann man abknallen
Da hätt da mal Zwei Problemchen :

1. Die Zombie's Werden ja durch Types erstellt. Nun Erstelle ich aber auch mehrere Fässer mit Types, die Fässer Brennen. Wenn ich drauf Schiesse explodieren sie. FRAGE : wie mach ich das die Zombie's leben verlieren?
BlitzBasic: [AUSKLAPPEN]

If EntityDistance(Z\Mesh,T\TonMesh)<50
Z\Life=Z\Life-10;Z\Mesh ist der Zombie;T\TonMesh die Tonne
EndIf

Das Geht nicht, auch ne sphere die sich bei der Explosion vergrössert geht nicht, hatt dann keine colli

Hatt Jemand ne Idee wie ich das mach?

2. Meine Fässer brennen ja. Das ist aber nur ein Sprite der mit rnd(3,7)
vergrössert wird, sihet nit so toll aus. Wie mache ich am besten gutes Feuer(z.B. Half Life²)[/b]
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
  • Zuletzt bearbeitet von Lunatix am Mo, Mai 23, 2005 13:47, insgesamt einmal bearbeitet

skey-z

BeitragDi, Mai 17, 2005 12:18
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Warum sollte ne kolli nicht funktionieren, musst nur halt richtig definieren und prüfen.

2. dafür solltest du dir dann ne partikel engine basteln/suchen.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Lunatix

BeitragDi, Mai 17, 2005 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu 1 : Kann ich denn nicht irgentwie die Distance Zwischen Dem Zombie und Dem Fass Feststellen? vielleicht an der Stelle des Fasses zusätzlich noch n ucbe machen und die distance vom cube und dem Zombie?

Zu 2 : ist das nicht langsam?
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

skey-z

BeitragDi, Mai 17, 2005 12:32
Antworten mit Zitat
Benutzer-Profile anzeigen
1. also für die Distance brauchst du nicht nen extra cube erstellen, musst nur prüfen, ob das Fass rennt und ob der zombie in ner bestimmten nähe ist, um schaden zu nehmen.
oder du nimmst entityradius, um dem Fass ein Größeres, unsichtbares Volumen zu geben und prüfst dann auf kollision mit dem Zombie

2. kommt drauf an, hab mich in die Materie selbst noch nicht eingearbeitet, aber das ist gerade dass, worauf man achten muss, dass es nicht zu komplex und somit rechenintensiv wird.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Lunatix

BeitragDi, Mai 17, 2005 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu 1 : Das geht eben nicht!

wenn ich :
BlitzBasic: [AUSKLAPPEN]

Function UpDateZombie()
For Z.Zombie = Each Zombie
...
...
...
If ExploFass=1
If EntityDistance(Z\Mesh,T\TonMesh)<50
Z\Life=Z\Life-10
EndIf
EndIf
...
...
Next
End Function

Mache dann geht das nicht ->RuntimeError ;Type Field not Found

wenn es einen größeren Radius hat, kann doch der Zombie nit am Fass vorbeilaufen, sondern Slidet drumherum[/syntax]
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Jan_

Ehemaliger Admin

BeitragDi, Mai 17, 2005 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
1. dafür gibt es einen befehl.
BlitzBasic: [AUSKLAPPEN]

EntityDistance

2. nein, das ist sicherlich schneller und kompfortabeller, als es du machen wirst.
between angels and insects

Lunatix

BeitragDi, Mai 17, 2005 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu 1 : LESEN! entitydistance(Z\Mesh,T\Ton) geht nicht, das ist es ja! Crying or Very sad
@Jan: weisst wo die DX7 userlib ist?
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

BladeRunner

Moderator

BeitragDi, Mai 17, 2005 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
zu 1: Ich vermute du iterierst nicht durch die Instanzen von Tonne und Zombie. Der Befehl als solches ist vollkommen korrekt.

zu dx7 lib: BB3D arbeitet von Hause aus mit DX7. da brauchts keine lib.
Für Bmax ist eine DX7-lib angedacht, aber die steht noch aus.

EDIT: oha. mea culpa, wusste von einer solchen Erweiterung nichts.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
  • Zuletzt bearbeitet von BladeRunner am Di, Mai 17, 2005 13:51, insgesamt einmal bearbeitet

Jan_

Ehemaliger Admin

BeitragDi, Mai 17, 2005 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, dann existieren diese objekte nciht!

http://blitzbasic.com/Communit...&hl=DX
between angels and insects

Lunatix

BeitragDi, Mai 17, 2005 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier codeausschnitt(ist allerdings nicht genau, hab den grad nicht hier) :
ausserdem kann ich im Spiel die Tonne Ja sehen und abschiessen
sie explodiert auch und Die Variable Explo ist auch 1
BlitzBasic: [AUSKLAPPEN]


Type ton
Field tonMesh
...
...
End Type

Global T.Ton

Type Zombie
Field Mesh
Field ZX,ZY,ZZ
Field
End Type
Global Z.Zombie

createZombie(50)
Repeat
updatezombie
render,UpdateWorld,Flip.....
Until KeyHit(1)
Function createZombie(anzahl)
For i= 1 To anzahl
Z.Zombie = New Zombie
Z\Mesh=CopyMesh(Zombie_Mesh)
EntityType Z\Mesh,ZombieType
ScaleEntity ZombieType,2,2,2

Z\ZX=Rnd(0,600)
Z\ZY=Rnd(0,600)
Z\ZZ=Rnd(0,600)

PositionEntity Z\Mesh,Z\ZX,Z\Zy,Z\ZZ
Next
End Function

Function UpDateZombie()
For Z.Zombie=Each Zombie
MoveEntity Z\Mesh,0,0,2
If EntityDistance(Z\Mesh,T\Ton)<40 And Explo=1
Z\Life=Z\Life-100
EndIf
...
...
;Fehlt noch KI, Laufen selbst für Zombie's zu Stumpf herum :wink:
Next
End Function


P.S.: Repat oder While Schleife? was ist better?[/syntax]
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Jan_

Ehemaliger Admin

BeitragDi, Mai 17, 2005 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
die Tonne ist an der stelle nicht da.
BlitzBasic: [AUSKLAPPEN]

For Z.Zombie=Each Zombie
For T.Tonne =Each tonne
MoveEntity Z\Mesh,0,0,2
If EntityDistance(Z\Mesh,T\Ton)<40 And Explo=1
Z\Life=Z\Life-100
EndIf
Next
Next
between angels and insects

skey-z

BeitragDi, Mai 17, 2005 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Zombie slidet nur drum herum, wenn du auch kollisionstypen etc. setzt, bei dem was du bisher geschrieben hast, ist nirgendswo ne Kollision definiert.

und du bei der Prüfung der Distanz musst du jeden Zombie und jede Tonne durchgehen, sowas habe ich in deinen Posts auch noch nicht gesehen.

du schreibst du hast dne Code gerade nicht da, warte einfach mal bis du wieder zu Hause, wherever bist, und zeig dann einfach mal deinen kompletten Code, ansonsten ist es schwierig, dir zu helfen.

[edit] heute habe ich irgendwie das Pech gepachtet, dass kurz vor mir jemand das gleiche schreibt, das gibt es doch garnicht^^
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Lunatix

BeitragDi, Mai 17, 2005 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
@Skey-Z : dein Edit versteh ich nit so ganz..

es hat alles ne kollision, wie gesagt es funzt alles, bis auf dass ich nicht die distance prüfen kann, er sagt mir Type Field Not Found
ich hab ja auch eine Tonne am anfang global geladen, da hab ich kei Type, das geht mit der distance weil es ja-> entitydistance(Z\Mesh,Fass)
ist. aber bei zwei verschiedenen Types geht es nicht, aber ich kann ja auch nicht 50 Fässer einzeln laden positionieren und updaten!
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Jan_

Ehemaliger Admin

BeitragDi, Mai 17, 2005 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
T ist Global, aber Leer!

wenn du =each tonne nimmst, ist e dannach leer!
Kapierst du es?

T ist leer,
Ich kann nihct mehr machen, als dir die Compiler fehler meldung übersetzten, weil sie Stimmt!
der Compiler schreibt das cniht, um dich zu ärgern!
between angels and insects

skey-z

BeitragDi, Mai 17, 2005 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ist auch nicht so wichtig, eher off-topic, das war das 3. mal, das mir jemand mit fast dem gleichen inhalt zuvor gekommen ist, in verschiedenen Themen.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Lunatix

BeitragMi, Mai 18, 2005 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Heisst also das ich die entfernung zwischen T\TonMesh und Z\Mesh nicht prüfen kann?

wenn das der Fall ist :

kann ich in einer for schleife für 4 tonnen einfach in jede tonne ein cube setzen und dann cube und z\Mesh testen?
BlitzBasic: [AUSKLAPPEN]

Global name$
For i = 1 To 4
name$=\"Cube\"+a
NAME$=CreateCube()
PositionEntity NAME$,TonX,TonY,TonZ
T.Ton=New Ton
...
...
a=a+1
Next

For Z.Zombie=Each Zombie
For i = 1 To 4
Name$=\"cube\"+a
If EntityDistance(Z\MEsh,Name$)
Z\Life=Z\Life-10
EndIf
a=a+1
Next
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Lunatix

BeitragMo, Mai 23, 2005 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Nochmal!

Häät da wieder ein new prob.:

Feuer! Ich hab schon mehrere Feuer funcs ausm Forum tested aber war meistens nur 2D. Meine Frage: wie ratet ihr mir das jetz in die Tat umzusetzen, Feuer in 3D und möglichst wenig FPS verbrauch?
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Devils Child

BeitragFr, Mai 27, 2005 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
meine fire-engine.
nimm sie!

Code: [AUSKLAPPEN]

Graphics3D 640, 480, 32, 2
AmbientLight 255, 255, 255
SetBuffer BackBuffer()
SeedRnd MilliSecs()

;Camera
Cam = CreateCamera()
CameraRange Cam, .1, 1000000
CameraClsColor Cam, 70, 70, 255

;Vertex
Vertex = CreatePivot()

;Sprites
Global Fire[100], Smoke3[100]
Dim xtrans2#(100), ytrans2#(200), ztrans2#(200)
For i = 1 To 100
  Fire[i] = LoadSprite("Smoke.bmp")
  EntityColor Fire[i], Rnd(150, 255), Rnd(0, 100), 0
  xtrans2#(i) = Rand(-100, 100)
  ytrans2#(i) = Rand(0, 400)
  ztrans2#(i) = Rand(-100, 100)
  xtrans2#(i) = xtrans2#(i) / 10000
  ytrans2#(i) = ytrans2#(i) / 10000
  ztrans2#(i) = ztrans2#(i) / 10000

  Smoke3[i] = LoadSprite("Smoke.bmp")
  EntityAlpha Smoke3[i], .1
Next

cnt1 = 1
cnt2 = 50

PositionEntity Cam, 0, 0, 5
While Not KeyHit(1)
  If KeyDown(200) Then p2 = p2 - 1
  If KeyDown(208) Then p2 = p2 + 1
  If KeyDown(203) Then p1 = p1 + 1
  If KeyDown(205) Then p1 = p1 - 1
  PositionEntity Cam, Sin(p1) * 5, Cos(p2) * 5, Cos(p1) * 5
  PointEntity Cam, Vertex

  cnt1 = cnt1 + 1: If cnt1 > 100 Then cnt1 = 1
  cnt2 = cnt2 + 1: If cnt2 > 100 Then cnt2 = 1
  PositionEntity Fire[cnt1], 0, 0, 0
  PositionEntity Smoke3[cnt2], 0, 0, 0
  For i = 1 To 100
    TranslateEntity Fire[i], xtrans2#(i), ytrans2#(i), ztrans2#(i)
    TranslateEntity Smoke3[i], xtrans2#(i), ytrans2#(i), ztrans2#(i)
  Next

  RenderWorld
  Flip
Wend
*X-Ware Member*

Mission to Hell[Ego-Shooter]
Hier Vollversion runterladen:
http://patrick-sch.de/spiele/m...ersion.zip

ich antworte auf jede PN

Devils Child

BeitragMo, Mai 30, 2005 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
sup. hab sie verbessert, endlich hab ich das
mit dem for...each... verstanden Very Happy

Code: [AUSKLAPPEN]
Graphics3D 640, 480, 32, 2
AmbientLight 255, 255, 255
SetBuffer BackBuffer()
SeedRnd MilliSecs()

;Camera
Cam = CreateCamera()
CameraRange Cam, .1, 1000000
CameraClsColor Cam, 70, 70, 255
PositionEntity Cam, 0, 0, -10

;Type Fire
Type Fire
  Field entity, alpha#, xt#, yt#, zt#
End Type

While Not KeyHit(1)

  AddFlame()
  UpdateFire()

  RenderWorld
  Flip
Wend

Function AddFlame()
  f.Fire = New Fire
  f\entity = LoadSprite("Smoke.bmp")
  EntityColor f\entity, Rnd(150, 255), Rnd(0, 100), 0
  f\xt# = Rand(-100, 100): f\xt# = f\xt# / 10000
  f\yt# = Rand(-10, 400):    f\yt# = f\yt# / 10000
  f\zt# = Rand(-100, 100): f\zt# = f\zt# / 10000
  f\alpha# = 1
End Function

Function UpdateFire()
  For f.Fire = Each Fire
    If f\alpha# > 0 Then
      MoveEntity f\entity, f\xt#, f\yt#, f\zt#
      f\alpha# = f\alpha# - .01
      EntityAlpha f\entity, f\alpha# / 2
    Else
      HideEntity f\entity
    EndIf
  Next
End Function


die smoke.bmp datei findet ihr da, wo bb intalliert ist. einfach unter "SMOKE" suchen Wink
*X-Ware Member*

Mission to Hell[Ego-Shooter]
Hier Vollversion runterladen:
http://patrick-sch.de/spiele/m...ersion.zip

ich antworte auf jede PN

Lunatix

BeitragDi, Mai 31, 2005 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
THX!!!!!
Werds probieren.

MFG JP
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group