Collision mit Sprite !?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

ToeB

Betreff: Collision mit Sprite !?

BeitragFr, Mai 18, 2007 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie kann ich die Collision mit einem Sprite prüfen ?

Also sowas wie "If SpriteEntityCollided(Sprite,Entity) then ..."


thx und mfg
Wink
Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Silver_Knee

BeitragFr, Mai 18, 2007 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Nutze:
Arrow Collisions
Arrow Entitycollided
Arrow EntityRadius
Arrow EntityBox
Arrow Arrow Blitzbase.de

The_Nici

BeitragFr, Mai 18, 2007 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
samples\si\fps

Dort spritzt Blut, in Form von Sprites, das auch "kleben" bleibt.

ToeB

BeitragSa, Mai 19, 2007 11:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Also : Ich mach das jett anders :

Ich erstell um meinen Sprite eine Sphere, setzte den Alphawert auf 0 und lass dann die Colllsion mit der Sphere machen ^^

Voll simple irgentwie Wink

thx und mfg
Wink
Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Silver_Knee

BeitragSa, Mai 19, 2007 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
wird bei alpha 0 das ding nicht trotzdem gerendert???
in dem fall wäre ein pivot mit Radius oder eineleere mesh mit ebengleichem besser

Tankbuster

BeitragSa, Mai 19, 2007 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
wird bei alpha 0 das ding nicht trotzdem gerendert???

Jop!
aber ich hab keine Ahnung, was besser wäre
Twitter
Download Jewel Snake!
Windows|Android

Silver_Knee

BeitragSa, Mai 19, 2007 11:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
in dem fall wäre ein pivot mit Radius oder eine leere mesh mit ebengleichem besser
 

ChristianK

BeitragSa, Mai 19, 2007 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
wird bei alpha 0 das ding nicht trotzdem gerendert???

Ich glaube aber nicht, dass es gerendert wird. Vielleicht versucht Blitz3D es zu rendern, aber die Grafikkarte ist so schlau und ignoriert es. Ich hab das mal getestet, indem ich ein Mesh mit ca. 50000 Polys erstellt habe. Bei Alpha = 0 hatte ich genauso viele fps wie mit HideEntity.

ToeB

BeitragSa, Mai 19, 2007 12:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Mhm... ja danke... aber irgentwie erkennt der meine Collisoins net Sad

Code: [AUSKLAPPEN]
;Laden
Global Tool = LoadSprite("Text\Unsichtbar.bmp",2)
EntityRadius Tool,1
EntityType Tool,4
HideEntity Tool
;In der Schleife :
For k.k = Each k
If k\tool_t = False TranslateEntity k\kI,0,-1,0
If k\tool_t = True then
ShowEntity k\Tool
If k\r = 0 then k\fy = k\fy - 0.001
If k\r = 1 then k\fy = k\fy + 0.001
If k\fy > 0.01 then k\r = 0
If k\fy < -0.01 then k\r = 1
k\y = k\y + k\fy
PositionEntity k\Tool,k\x,k\y,kz
If EntityCollided(k\tool,1)<>0 then EntityAlpha b(1),0.2:k\del = 1
If k\del = 1 then FreeEntity k\tool:Delete k.k
Next 


Wieso futzt das net ??
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

codie

BeitragSa, Mai 19, 2007 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
hideentity macht das das objekt unsichbar ist und keine collision hat
Wer bist zum Hals in der Scheiße steckt sollte den Kopf nicht hängen lassen.

ToeB

BeitragSa, Mai 19, 2007 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Crack93 hat Folgendes geschrieben:
Code: [AUSKLAPPEN]
ShowEntity k\Tool


Hier wirds doch weider "geshowed" oda !?
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

AcidRain

BeitragSa, Mai 19, 2007 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Haste die Collis vorher festgelegt???
Am besten du guckst dir das castle-Beispiel im Blitz3D-Demo Ordner an,falls du die hast,da wird mit Sprites geschossen,die mit der Landschaft und dem castle kollidieren.. Very Happy

Tankbuster

BeitragSa, Mai 19, 2007 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ShowEntity musst wahr sein, wenn du UpdateWorld benutzt! z.B.
Zitat:
ShowEntity lol
HideEntity lol
UpdateWorld
RenderWorld

das wird nie funktionieren!
Twitter
Download Jewel Snake!
Windows|Android

ToeB

BeitragSa, Mai 19, 2007 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich ja uch net !

Zitat:
Vor der Schleife : HideEntity Tool
In der Schleife : ShowEntity Toll


Warted, ich geb euch mal den ganze Code (nicht wundern, es sind noch net alle kommentare geschrieben worden...)
Code: [AUSKLAPPEN]
;**************************************************************************************
;******************************* BOMBERMAN 3D *****************************************
;**************************** CREATED BY CRACK93 **************************************
;**************************************************************************************
;**************************************************************************************

;*** GraphicsMode+Buffer setzten ***
Graphics3D 800,600,16,2
SetBuffer BackBuffer()

;*** Zufallsgenerator auf zufällig setzten ***
SeedRnd MilliSecs()

;*** Types ***
Type s
Field ms,sb,cd,zahl,fire
End Type

Type e
Field sp,rx#,rz#,fy#,speed#,w
End Type

Type k
Field x#,y#,z#,tool,Ki,tool_t,fy#,r,del
End Type

;*** Variablen Globaliesieren ***
Global e.e
Global s.s
Global k.k
Global AnzahlEx=50
Global Colliki = 5
Global s1=Rand(1,4),s2=Rand(1,4)
Global pos=Rand(1,4)
Global timer=CreateTimer(50)
Global ges#=0.3
Global Leben1=100,Leben2=100
Global lang = 5

;*** Arrays ***
Dim b(2)
Dim Ex(5)


;*** Texturen ***
Global Kiste_Text = LoadTexture("Text\Kiste.bmp")


;*** Images Laden ***
Global Herz = LoadImage("Text\Herz.bmp")
MaskImage Herz,255,0,255

;*** Entitys Laden,Erstellen ***
;--- Cameras ---
Global c1=CreateCamera()
If pos=1 Then PositionEntity c1, 15,6.5,1 :RotateEntity c1,0,45,0
If pos=2 Then PositionEntity c1,-31,6.5,1 :RotateEntity c1,0,315,0
If pos=3 Then PositionEntity c1, 15,6.5,31:RotateEntity c1,0,135,0
If pos=4 Then PositionEntity c1,-31,6.5,31:RotateEntity c1,0,225,0
EntityType c1,1

Repeat
a=Rand(1,4)
Until a<>pos
pos=a:a=0

Global c2=CreateCamera()
If pos=1 Then PositionEntity c2, 15,6.5,1 :RotateEntity c2,0,45,0
If pos=2 Then PositionEntity c2,-31,6.5,1 :RotateEntity c2,0,315,0
If pos=3 Then PositionEntity c2, 15,6.5,31:RotateEntity c2,0,135,0
If pos=4 Then PositionEntity c2,-31,6.5,31:RotateEntity c2,0,225,0
EntityType c2,2

;--- Map ---
Global Map = LoadMesh("Maps\Map1.X")
PositionEntity Map,0,5,0
EntityType Map,3

;--- Bombe ---
Global Bomb=LoadMesh("Models\Bombe1.X")
PositionEntity Bomb,0,6.5,10
ScaleEntity Bomb,0.5,0.5,0.5
HideEntity Bomb

;--- Figuren ---
b(1) = LoadMesh("Models\Bomb"+s1+".X")
b(2) = LoadMesh("Models\Bomb"+s2+".X")

;--- Sonstiges ---
Global Kiste = CreateCube()
ScaleEntity Kiste,0.85,0.85,0.85
EntityTexture Kiste,Kiste_Text
HideEntity Kiste

;*** Collisions ***
Collisions 1,3,2,3
Collisions 2,3,2,3
Collisions 1,2,2,1
Collisions 2,1,2,1

;*** Sprites ***
Global Tool = LoadSprite("Text\Unsichtbar.bmp",2)
EntityRadius Tool,1
EntityType Tool,4
HideEntity Tool


For iii = 1 To 5
  Ex(iii) = LoadSprite("Text\Ex"+iii+".bmp",2)
  HideEntity Ex(iii)
Next

;*** Kisten erstellen ***
For iiii = 1 To 20
  k.k = New k
  k\x = Rand(1,30)
  k\y = 6.5
  k\z = Rand(1,30)
  k\Tool = CopyEntity(Tool)
    PositionEntity k\Tool,k\x,k\y+0.1,k\z
    HideEntity k\Tool
  k\Ki = CopyEntity(Kiste)
    PositionEntity k\Ki,k\x,k\y,k\z
    EntityType k\Ki,ColliKi
  Collisions 1,ColliKi,2,2
  Collisions 2,ColliKi,2,2
  Collisions ColliKi,3,2,2
    CollliKi = ColliKi + 1
Next
;**************************************************************************************
;************************************ Die Schleife ************************************
;**************************************************************************************
Repeat
;*** Camera einstellungen ***
;--- Camera 1 ---
CameraViewport(c1,0,0,800,300)
If KeyDown(200) Then MoveEntity c1,0,0, ges#
If KeyDown(208) Then MoveEntity c1,0,0,-ges#
If KeyDown(203) Then TurnEntity c1,0, ges#*10,0
If KeyDown(205) Then TurnEntity c1,0,-ges#*10,0
TranslateEntity c1,0,-0.2,0

;--- Camera 2 ---
CameraViewport(c2,0,300,800,300)
If KeyDown(22) Then MoveEntity c2,0,0, ges#
If KeyDown(36) Then MoveEntity c2,0,0,-ges#
If KeyDown(35) Then TurnEntity c2,0, ges*10,0
If KeyDown(37) Then TurnEntity c2,0,-ges*10,0
TranslateEntity c2,0,-0.2,0

;*** Positionen : Spieler ***
;--- Spieler 1 ---
PositionEntity b(1),EntityX(c1),EntityY(c1),EntityZ(c1)
RotateEntity b(1),EntityPitch(c1),EntityYaw(c1)+270,EntityRoll(c1)

;--- Spieler 2 ---
PositionEntity b(2),EntityX(c2),EntityY(c2),EntityZ(c2)
RotateEntity b(2),EntityPitch(c2),EntityYaw(c2)+270,EntityRoll(c2)


;*** Schüsse erstellen ***
;--- c1 ---
If KeyHit(28) Then
s.s=New s
s\sb=CopyEntity(Bomb)
PositionEntity s\sb,EntityX(c1),EntityY(c1),EntityZ(c1)
RotateEntity s\sb,0,Rand(360),0
s\ms=MilliSecs()
s\cd=1000*(lang+1)
s\zahl=SpriteText((s\cd-(MilliSecs()-s\ms))/1000)
s\fire = 0
EndIf

;--- c2 ---
If KeyHit(30) Then
s.s=New s
s\sb=CopyEntity(Bomb)
PositionEntity s\sb,EntityX(c2),EntityY(c2),EntityZ(c2)
RotateEntity s\sb,0,Rand(360),0
s\ms=MilliSecs()
s\cd=1000*(lang+1)
s\zahl=SpriteText((s\cd-(MilliSecs()-s\ms))/1000)
s\fire =0
EndIf

an=0
For s.s=Each s
FreeEntity s\zahl
s\zahl=SpriteText((s\cd-(MilliSecs()-s\ms))/1000)
PositionEntity s\zahl,EntityX(s\sb)-1.3,EntityY(s\sb),EntityZ(s\sb)
If (s\cd-(MilliSecs()-s\ms))/1000 < 0 Then s\fire = 1
If s\fire = 1
For ii = 1 To AnzahlEx
e.e=New e
speed#=Float(Rnd(0.01,0.05))
e\speed#=speed#
Ex_Rnd=CopyEntity(Ex(Rand(1,5)))
e\sp= Ex_Rnd
PositionEntity e\sp,EntityX(s\sb),EntityY(s\sb),EntityZ(s\sb)
e\rx=Rnd(-0.10,0.10)
e\rz=Rnd(-0.10,0.10)
e\fy=speed#*Rand(15,20)
Next
For i = 0 To 6
If EntityDistance(s\sb,c1)<i Then Leben1 = Leben1 - (60-(i*10)):Exit
Next
For i = 0 To 6
If EntityDistance(s\sb,c2)<i Then Leben2 = Leben2 - (60-(i*10)):Exit
Next
For k.k = Each k
If k\ki <> 0And EntityDistance(k\ki,s\sb) < 3 Then PositionEntity k\tool,EntityX(k\ki),EntityY(k\ki),EntityZ(k\ki)FreeEntity k\kI:k\tool_t = 1:Exit
Next
FreeEntity s\sb:FreeEntity s\zahl
Delete s.s
EndIf
an=an+1
Next
For e.e=Each e
e\fy=e\fy-Float(e\speed)
RotateSprite e\sp,e\w
e\w = e\w + Rand(5,15)
MoveEntity e\sp,e\rx,e\fy,e\rz
If e\fy < -0.75 FreeEntity e\sp:Delete e.e

Next
For k.k = Each k
If k\tool_t = False TranslateEntity k\ki,0,-1,0
If k\tool_t = True Then
ShowEntity k\tool
If k\r = 0 Then k\fy = k\fy - 0.001
If k\r = 1 Then k\fy = k\fy + 0.001
If k\fy > 0.01 Then k\r = 0
If k\fy < -0.01 Then k\r = 1
k\y = k\y + k\fy
;PositionEntity k\Tool,k\x,k\y,k\z
If EntityCollided(k\tool,1)<>0 Then EntityParent k\Tool,c1 : EntityType k\Tool,0
EndIf
If k\del = 1 Then FreeEntity k\tool:Delete k.k
Next
UpdateWorld()
RenderWorld()
Line 0,300,800,300
Color 255,255,255
Text 1,1,"Leben : "+Leben1
Text 1,301,"Leben : "+Leben2
For i = 1 To Leben1/10
DrawImage Herz,(-ImageWidth(Herz))+i*ImageWidth(Herz),13
Next
For i = 1 To Leben2/10
DrawImage Herz,(-ImageWidth(Herz))+i*ImageWidth(Herz),314
Next
If Leben1 < 0 Or Leben2 < 0 Then
If Leben1 < 0 Then win=2
If Leben2 < 0 Then win=1
If Leben1 < 0 And Leben2 < 0 Then win = 0
For i = 20 To 0 Step -1
Trans(0,0,800,600,i)
Flip
Delay 100
Cls
Next
Repeat
Color 100,100,100:Rect 0,0,800,600:Color 255,255,255
Text GraphicsWidth()/2,100,"SPIEL VORBEI",1
Text GraphicsWidth()/2,150,"Gewonnen hat Spieler"+win+" !",1
Text GraphicsWidth()/2,170,"Herzlichen Glückwunsch !",1
If TextField(GraphicsWidth()/2,300,"Beenden ?",1) Then End
If TextField(GraphicsWidth()/2,250,"Nochmal Spielen ?",1) Then
Leben1=100:Leben2=100
pos=Rand(1,4)
If pos=1 Then PositionEntity c1, 15,6.5,1 :RotateEntity c1,0,45,0
If pos=2 Then PositionEntity c1,-31,6.5,1 :RotateEntity c1,0,315,0
If pos=3 Then PositionEntity c1, 15,6.5,31:RotateEntity c1,0,135,0
If pos=4 Then PositionEntity c1,-31,6.5,31:RotateEntity c1,0,225,0
FlushKeys()
Repeat
a=Rand(1,4)
Until a<>pos
pos=a
If pos=1 Then PositionEntity c2, 15,6.5,1 :RotateEntity c2,0,45,0
If pos=2 Then PositionEntity c2,-31,6.5,1 :RotateEntity c2,0,315,0
If pos=3 Then PositionEntity c2, 15,6.5,31:RotateEntity c2,0,135,0
If pos=4 Then PositionEntity c2,-31,6.5,31:RotateEntity c2,0,225,0
For s.s=Each s
FreeEntity s\sb
FreeEntity s\zahl
Next
For e.e=Each e
FreeEntity e\sp
Next
Delete Each s
Delete Each e
Exit
EndIf
Oval MouseX()-10,MouseY()-10,20,20,0
Plot MouseX(),MouseY()
Flip
Cls
Forever
EndIf
Flip
If KeyHit(28) Then SaveBuffer(FrontBuffer(),"Screen4.png")
WaitTimer(timer)
Cls
Until KeyHit(1)
End

Function SpriteText(Text$,r=255,g=255,b=255)
Local spTex = CreateImage(StringWidth(Text$),50)
SetBuffer ImageBuffer(spTex)
Color r,g,b
Text 0+StringWidth(Text$)/2,0+StringHeight(Text$)/2,Text$,1,1
SaveImage(spTex,"Text"+Text$+".bmp")
Local sp=LoadSprite("Text"+Text$+".bmp",2)
ScaleSprite sp,StringWidth(Text$)/7.5,StringHeight(Text$)/7.5
DeleteFile("Text"+Text$+".bmp")
SetBuffer BackBuffer()
Color 255,255,255
Return sp
End Function

Function Trans(x,y,width,height,Abst=2,r=100,g=100,b=100)
Color r,g,b
For xx = x To width
xx=xx+Abst
Line xx,y,xx,Height
Next
For yy = y To Height
yy=yy+Abst
Line x,yy,width,yy
Next
Color 255,255,255
End Function

Function TextField(x,y,Text$,width=0,Height=0)
Local Wert = 0
Local mx = MouseX()
Local my = MouseY()
Local l  = StringWidth(Text$)
Local b  = StringHeight(Text$)
Local bb=0,ll=0
If width<>0 Then  ll = StringWidth(Text$)/2
If height<>0 Then bb=StringHeight(Text$)/2
If mx > x-ll   And my > y-bb   Then
If mx < x+l-ll And my < y+b-bb Then
Color 255,0,0
If MouseHit(1) Then Wert = 1
Else
Color 255,255,255
EndIf
EndIf
Text x,y,Text$,Width,Height
Color 255,255,255
Return Wert
End Function


Vresteht ihr das ?
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group