Gegenstände einsammeln.
Übersicht

emdeBetreff: Gegenstände einsammeln. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit HideEntity(entity) müsste es klappen
mfg Moep |
||
emde |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, das problem ist ja nicht das der gegenstant nicht verschwindet sondern das er nicht aufhört die kollision zu zählen.
emde |
||
coldie |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nimm doch FreeEntity(), dann wird das Entity vollständig entfernt.
Ausserdem hat Moep recht: Mit HideEntity() werden auch die Kollisionen ausgeschaltet. |
||
emde |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
coldie |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? |
||
![]() |
SchnittlauchUnkraut |
![]() Antworten mit Zitat ![]() |
---|---|---|
Falls du types benutzt vergess nicht den Type Eintrag zu löschen. | ||
Ich wars nicht. |
emde |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. ![]() |
||
emde |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh, das mit repeat weiss ich auch nicht ganz genau, sry. | ||
![]() |
Black Spider |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group