Gegenstände einsammeln.

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

emde

Betreff: Gegenstände einsammeln.

BeitragFr, März 09, 2007 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich bin neu hier im forum habe aber schon einiges programmiert. Nun bin ich bei einem BB3D spiel, wo man verschiedene dinge einsammeln soll. NUn ist das problem folgendes: Die gegenstände verschwinden wenn man sie brührt(Entity alpha) aber nun wird die kollision ja immer noch gezählt, also habe ich es mit resetentity, aber die kollisionen werden immer noch gezählt. Kann mir einer vielleicht einen kleinen beispiel code schreiben? Oder es mir erklären?

Vielen dank schon mal im voraus, emde

Moep

BeitragFr, März 09, 2007 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit HideEntity(entity) müsste es klappen


mfg Moep
 

emde

BeitragFr, März 09, 2007 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, das problem ist ja nicht das der gegenstant nicht verschwindet sondern das er nicht aufhört die kollision zu zählen.

emde
 

coldie

BeitragFr, März 09, 2007 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm doch FreeEntity(), dann wird das Entity vollständig entfernt.

Ausserdem hat Moep recht: Mit HideEntity() werden auch die Kollisionen ausgeschaltet.
 

emde

BeitragFr, März 09, 2007 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, bei mir wird mit hideentity die kollision nicht ausgeschaltet. Mit freeentity() Habe ich es auch schon versucht da die kollision aber in einer schleife statfindet und wenn ich dann freeentity eingebe bekomme ich eine fehler meldung.

skey-z

BeitragFr, März 09, 2007 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
zeig doch mal deinen Code, den hideentity schaltet mit sicherheit die Kollisionsabfrage für Objekte aus.

Außerdem würde mich und sicher andere auch, interessieren, wie du deine Objekte erstellt, jeweils einzeln laden, per Array oder als Types.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

coldie

BeitragFr, März 09, 2007 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau.
Du machst ja anscheinend in jedem Schleifendurchgang etwas mit dem fraglichen Objekt, sonst würdest du auch keinen Fehler bekommen wenn du FreeEntity() machst.
Aber eigentlich sollte doch von alleine nichts mehr mit dem Objekt gemacht werden nachdem es eingesammelt wurde oder?

Schnittlauch

Unkraut

BeitragFr, März 09, 2007 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls du types benutzt vergess nicht den Type Eintrag zu löschen.
Ich wars nicht.
 

emde

BeitragFr, März 09, 2007 23:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin hier ist mein code noch ohne terrain.
Code: [AUSKLAPPEN]

Graphics3D 640,480
SetBuffer BackBuffer()
ball=LoadMesh("ball.b3d")
stern=LoadMesh("stern.b3d")
sterne=0
nochsterne=10


unsichtbar=5
PositionEntity ball,50,-10,0
cam=CreateCamera(ball)
PositionEntity cam,-0.5,15,-10
Repeat
If KeyDown(200)  Then  MoveEntity ball, 0,0,+0.1   
If  KeyDown(208)  Then  MoveEntity ball, 0,0,-0.1
If KeyDown (205) Then  MoveEntity ball, +0.1,0,0
If KeyDown(203) Then  MoveEntity ball, -0.1,0,0
TurnEntity stern,0,2,0
Repeat
PositionEntity stern,0,-17,0
If MeshesIntersect(ball,stern)=1 Then 
HideEntity stern
Text 50,0 ,"Hallo"
EndIf
Text 100,0 ,"Sterne:"+""+ sterne +"/"+nochsterne
Flip
UpdateWorld
Until KeyHit(1)
 

coldie

BeitragFr, März 09, 2007 23:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Da kommen wir doch der Sache schon näher.

1. Hast du da keine normale Kollision, sondern du benutzt mit MeshesIntersect die lansamste Methode, die Blitz zur verfügung stellt.
nimm doch wenigstens den Collisions Befehl, oder was noch viel einfacher wäre: EntityDistance ()


2. Warum hast du da 2x Repeat drinne? Wie kannst du das überhaupt ohne Fehlermeldung kompilieren, da doch das until des 2. (IMHO sinnlosen) Repeat Befehls fehlt?

3. Brauchst du doch nicht bei jedem Schleifendurchgang den Stern an eine fest vorgegebene Stelle zu positionieren, mach es einmal bevor die Hauptschleife startet.

Wink
 

emde

BeitragFr, März 09, 2007 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, das mit repeat weiss ich auch nicht ganz genau, sry.

Black Spider

BeitragSa, März 10, 2007 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
so hier, biddeschön.
Allerdings solltest du dir noch ein paar Tutorials durchlesen und wenn du ein wirkliches Spiel draus machen willst,
solltest du Types verwenden.

Code: [AUSKLAPPEN]
Const K_Ball    = 1
Const K_Stern    = 2



Graphics3D 640,480
SetBuffer BackBuffer()
HidePointer()

Collisions K_Ball,K_Stern,2,3


ball=CreateSphere()
EntityType ball,K_Ball
PositionEntity ball,0,0,-5
EntityRadius ball,2,2

stern=CreateCube()
EntityType stern,K_Stern
PositionEntity stern,0,1,2
ScaleEntity stern,2,2,2
EntityColor stern,255,255,0
EntityRadius stern,2,2

sterne=0
nochsterne=10


unsichtbar=5

CreateLight()

cam=CreateCamera(ball)
PositionEntity cam,0,2,-3



Repeat
PointEntity cam,ball

If KeyDown(200)  Then  MoveEntity ball, 0,0,0.2   
If  KeyDown(208)  Then  MoveEntity ball, 0,0,-0.2
If KeyDown (205) Then  TurnEntity ball, 0,-1,0
If KeyDown(203) Then  TurnEntity ball, 0,1,0

TurnEntity stern,1,1,1

If EntityCollided(ball,K_Stern) Then
sterne = sterne + 1
nochsterne = nochsterne -1
PositionEntity stern,Rnd(-30,30),1,Rnd(-30,30)
End If


UpdateWorld
RenderWorld
Text 100,0 ,"Sterne:"+""+ sterne +"/"+nochsterne
Flip
Until KeyHit(1)
End

Coming soon:
http://img132.imageshack.us/im...im2ab6.gif
 

emde

BeitragSo, März 11, 2007 10:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, vielen dank nun funktioniert es.

EDIT: ICh habe noch mal ne frage die sicherlich sehr dumm ist. Bei meinem ersten lvl soll man schräge wände hochfahren können. Aber die ganz steilen nicht. Wie kann ich es nun so programmieren das er es erkennt. Kenn t einer vielleicht ein tutorial dazu?

emde
 

AFRO

BeitragMo, März 19, 2007 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
die schrägen wände kannst du ganz einfach mit slide-collision machen denke ich, für die hohen auch, wenn sie 90° hoch stehen zumindest^^ du könntest auch deine kugel immer y-1 moven, heißt sie zieht es nach unten, hätte den schönen effekt, dass du schwerkraft hast (sprich dass man vll den berg runterrollt wenn man auf dem hügel liegen bleibt) und dass man übersteile wände nicht hochrollen kann.

Hoffe das hilft dir ein wenig

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group