Sachen einsammeln (es will nicht deleten )
Übersicht

![]() |
DottakopfBetreff: Sachen einsammeln (es will nicht deleten ) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guten Abend zusammen !
Also mein Problem besteht darin, dass mein player keine sachen einsammelt (in meinem fall ein baum Mesh). Die Bäume erstellen und das hineinsetzten in die Welt hab ich schon hinbekommen. Ich vermute das Problem liegt in der Kollisionsabfrage mit einen der Bäume. Ich stell hier mal meinen code rein : (im 2D hats so immer gefuntzt) und ja ich habe vorher die Onlinehilfe aufgesucht ! Hab auch in der erweiterten Suche gestöbern. Leider nichts brauchbares gefunden. naja wie gesagt hier der code : Code: [AUSKLAPPEN] Global info.rubin, type_rubin ;------------------------ ;type Type rubin Field rb_x Field rb_y Field rb_z End Type Restore rubin_lv Read anzahl For i = 1 To anzahl info.rubin = New rubin Read rb_x,rb_y,rb_z info\rb_x = rb_x info\rb_y = rb_y info\rb_z = rb_z Next ;rubine For info.rubin = Each rubin baum = LoadMesh("pfad..\baum01.b3d") EntityType baum, type_rubin PositionEntity baum,info\rb_x,info\rb_y,info\rb_z Next ; //// Hauptschleife \\\\ functionen ;------------------ ;rubine einsammeln For info.rubin = Each rubin If EntityCollided(player,type_rubin) Then Delete info.rubin End If Next End Function ;rubine malen .rubin_lv Data 3 Data 20,0,20 Data 25,0,20 Data 30,0,20 Für eure Hilfe danke ich schon einmal im vorraus ! |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du info.rubin löschst ist dein typ gelöscht.... dein objekt was du aufsammeln willst ist aber unabhängig vom typ erstellt worden:
Code: [AUSKLAPPEN] baum = LoadMesh("pfad..\baum01.b3d")
in dem type oben muss also mindestens noch stehen: Code: [AUSKLAPPEN] field baum
dann müsstet du zum erstellen schreiben: Code: [AUSKLAPPEN] info\baum = LoadMesh ....
danach machst du einfach folgendes: Code: [AUSKLAPPEN] HideEntity Info\baum (wenn du es nicht löschen willst wie du bereits sagtest)
zum löschen freeentity benutzen hoffe konnte helfen und hoffe wirklich ich hab dir das jetz richtig erklärt! ![]() mfg. |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke erstmal !!
hab das alles so gemacht wie du mir es erklärt hattes (und es war auch gut nachvollziehbar ![]() Doch Funzen tuts leider immer noch nicht. ![]() Also ich hab den Baum in die type s aufgenommen inetwa so: Code: [AUSKLAPPEN] Type rubin Field rb_x Field rb_y Field rb_z Field baum ;baum nei End Type Restore rubin_lv Read anzahl For i = 1 To anzahl info.rubin = New rubin Read rb_x,rb_y,rb_z info\rb_x = rb_x info\rb_y = rb_y info\rb_z = rb_z ;kann es sein das hier noch der baum mit rein muss ?? :oops: Next dan das ganze erstellet mit: info\baum = loadmesh(..) (entitytype = type_rubin) So und etza beim "löschen" hab ich es zuerst so gemacht: Code: [AUSKLAPPEN] For info.rubin = Each rubin If EntityCollided(player,type_rubin) Then ;ist da die coll falsch ???? FreeEntity info\baum End If Next aber da tut sich nix. Dann hab ich mal statt "freeentity info\baum " einfach nur "end" eingegeben. So wollte ich überprüfen ob über haupt ne Kollision stattfindet. ----> nix passierte. Ich mach bestimmt irgendwo n blöden Noobi fehler und ich find ihn ned ![]() Vielleicht weist du ja n gutes 3D tut wo genau sowas behandelt wird? Wäre echt cool ! |
||
- Zuletzt bearbeitet von Dottakopf am Do, Jan 04, 2007 13:07, insgesamt einmal bearbeitet
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke erstmal !!
hab das alles so gemacht wie du mir es erklärt hattes (und es war auch gut nachvollziehbar ![]() hab in die type s den baum auf genommen inetwa so: Code: [AUSKLAPPEN] Type rubin Field rb_x Field rb_y Field rb_z Field baum ;baum nei End Type Restore rubin_lv Read anzahl For i = 1 To anzahl info.rubin = New rubin Read rb_x,rb_y,rb_z info\rb_x = rb_x info\rb_y = rb_y info\rb_z = rb_z ;kann es sein das hier noch der baum mit rein muss ?? :oops: Next dan das ganze erstellet mit: info\baum = loadmesh(..) (entitytype = type_rubin) So und etza beim "löschen" hab ich es zuerst so gemacht: Code: [AUSKLAPPEN] For info.rubin = Each rubin If EntityCollided(player,type_rubin) Then ;ist da die coll falsch ???? FreeEntity info\baum End If Next aber da tut sich nix. Dann hab ich mal statt "freeentity info\baum " einfach nur "end" eingegeben. So wollte ich überprüfen ob über haupt ne Kollision stattfindet. ----> nix passierte. Ich mach bestimmt irgendwo n blöden Noobi fehler und ich find ihn ned ![]() Vielleicht weist du ja n gutes 3D tut wo genau sowas behandelt wird? Wäre echt cool ! |
||
![]() |
Goldini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Probier den Code: [AUSKLAPPEN] Global info.rubin, type_rubin ;------------------------ ;type Type rubin Field rb_x Field rb_y Field rb_z End Type Restore rubin_lv Read anzahl const type_rubin=1,Player=2 collisions Player,type_rubin,2,3 For i = 1 To anzahl info.rubin = New rubin Read rb_x,rb_y,rb_z info\rb_x = rb_x info\rb_y = rb_y info\rb_z = rb_z Next cam=createcamera() entitytype cam,Player entityradius cam,5 ;rubine For info.rubin = Each rubin baum = LoadMesh("pfad..\baum01.b3d") EntityType baum, type_rubin PositionEntity baum,info\rb_x,info\rb_y,info\rb_z Next ; //// Hauptschleife \\\\ functionen ;------------------ ;rubine einsammeln For info.rubin = Each rubin If EntityCollided(player,type_rubin) Then Delete info.rubin End If Next End Function ;rubine malen .rubin_lv Data 3 Data 20,0,20 Data 25,0,20 Data 30,0,20 Mfg ![]() |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke Goldini !
Hab mir deinen Code mal genau angeguckt und etz funzt des mit dem einsammeln. musste eine collisonsabfrage schreiben: (collisons type_player,type_rubin,2,2) und ich hatte vergessen einen der types (type_rubin) einen wert zuzuweisen! ^^ (damit die kollision klappt) So aber irgendetwas hab ich dan doch falsch gemacht ! Denn seitdem ich das geändert habe stimmt die Positionnierung der Bäume nicht mehr ! Aber warum ??? Laut meinem "mapdata" müssten sie eine schöne linie im abstand von 5 bilden. doch die machen da was sie wollen ^^ Auch sammel ich alle bäume auf einmal ein dabei will ich ja baum für baum einsammeln. Puh (schweis abwisch) Hoffentlich konnte ich euch mein Problem verständlich machen. Bitte schaut euch des mal kurz an. Irgendwo is der wurm drin. thx schon mal für eure Mühe! Code: [AUSKLAPPEN] ;bäume\rubine malen .rubin_lv Data 3 Data 20,0,20 Data 25,0,20 Data 30,0,20 Irgendwas mache ich hier ganzschön falsch : So siehts momentan bei mir aus. Code: [AUSKLAPPEN] Global info.rubin, type_rubin = 1 Global baum,rubin ;------------------------ ;type Type rubin Field rb_x Field rb_y Field rb_z Field baum End Type Restore rubin_lv Read anzahl For i = 1 To anzahl info.rubin = New rubin Read rb_x,rb_y,rb_z info\rb_x = rb_x info\rb_y = rb_y info\rb_z = rb_z Next ;rubine erstellen For info.rubin = Each rubin info\baum = LoadMesh("pfad..\3D\gfx\baum01.b3d") EntityType info\baum,type_rubin PositionEntity info\baum,info\rb_x,info\rb_y,info\rb_z Next Dann weiter unten kommt dan meine "Collisions - Funktion" da habe ich auch die Anweisung zum "einsammeln " reingetan. Code: [AUSKLAPPEN] Function collision() Collisions type_player,type_scene,2,2 ;collis Zwischen player u. Terrain Collisions type_player,type_rubin,2,2 ;collis zwischen player u. dem Baum ;rubine einsammeln For info.rubin = Each rubin If EntityCollided(player,type_rubin) Then FreeEntity info\baum ;baum löschen End If Next End Function |
||
![]() |
Goldini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also was ist dein Problem im Klartext?
Mfg |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dache mir schon das das kommt ^^
Sry is vielleicht n bisschen dumm erklärt gewesen. Die Situation : momentan sieht so aus , dass ich mit meinem player(mario) über ein terrain (n einfaches plane) laufe. Als deko habe ich ne kleine Rampe (aus milkshape) und 3 Bäume die ich mit "mapdata" also for i = x bäume ... in die welt gesetzt habe. Ziel des ganzen ist es bäume einzusammeln (die bei mir verwirrenderweise auch rubine gennant werden) ![]() Das Problem : 1. Seitdem des mit dem einsammeln klappt, stimmt die Positionierung der Bäume nicht mehr. Sie müssten eigentlich in regelmäßigen abständen in einer geraden linie stehen -- > was sie aber nicht tun. 2. Und statt baum für baum einzusammeln, sammelt(löscht) er gleich alle bäume. Das liegt glaube ich daran, dass er den type löscht und nicht das jeweilige Objekt welches man berührt. Die Frage: Warum passiert das ? und wie kann ich das richten ? Konnte leider kein gutes tut zu diesem Thema finden! wenn einer eins wüsste, dann wäre das echt cool wenn er hier den link mal posten könnte mfg Dottakopf |
||
![]() |
Goldini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tja das Problem das er alle löscht hab ich auch in "The Mystery World"
sry kann dir nicht helfen ![]() Mfg |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
das problm ist, das alle "rubine" ja den type_rubin benutzen, heißt bei einer Kollision mit einem baum der den Type_rubin benutzt ( egal welcher ) ist die If abfrage = True und damit wird der type gelöscht. ich würde als lösung kollision zwischen info\baum und type_player prüfen!
MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja daran dachte ich auch erst. Doch bb spuckt dan die Fehlermeldung "entity does not exist " aus. ![]() Zur veranschaulichung : Code: [AUSKLAPPEN] Function collision() Collisions type_player,type_scene,2,2 Collisions type_player,type_rubin,2,2 ;rubine einsammeln For info.rubin = Each rubin If EntityCollided(info\baum,type_player) Then FreeEntity info\baum End If Next End Function Ich hock mich eza nochmal hin und schreib etz mal n extra progi (aus cube und spheren) vielleicht komm ich ja noch druff. Kann ja ned so schwer sein des noch zum laufen zu bringen ![]() |
||
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Abend ![]() löschen tust du das so: Code: [AUSKLAPPEN] Delete info.rubin
und nicht so: Code: [AUSKLAPPEN] FreeEntity info\baum
MfG Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
![]() |
Goldini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin
kann mir das bitte noch jemand das einmal von ganz vorn erklären? also das mit dem kolidieren. |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
also, der type_rubin in dem Fall wird ja von allen "rubinen" benutzt, heißt wenn man auf kollision von player und type_rubin prüft, prüft man nur, ob eine kollision zwischen dem player und irgendeinem objekt vom type_rubin besteht, dass ist solange richtig, bis das objekt mit dem man wirklich kollidiert gelöscht wird, heißt auch solange werden alle rubine, die vorher in der For - Each schleife kommen gelöscht. Desshalb muss man auf kollision zwischen info\baum und type_player testen, da info\baum genau der eine Baum ist und type_player ja auch nur der eine player, da es ja mehr nicht gibt ![]() Warum das nicht funktioniert, kann ich ohne kompletten Code so nicht sagen! MfG ~edit~ und bruce hat recht, du musst es so löscen: Code: [AUSKLAPPEN] freeentity info\baum ; mesh löschen, da es sonst im speicher bleibt delete info.rubin ; type löschen |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke etz hab ich das Problem gut verstanden !
Ok ich hab mal n extra progi geschreiben wo genau das gleiche Problem drin ist. Es besteht nur aus Spheren und einem cube(als boden). So kann jeder, wenn er lust hat, sich das ganze via strg c und strg v in bb einfügen und schauen was passiert. Bitte lasst euch von dem code nicht abschrecken ! es schaut schlimmer aus als es ist ^^. Dieser code erstellt einen player, nen Boden , und drei Kugeln zum einsammeln. Mit Pfeiltasten kann man den Player steuern. Hoffe ihr könnt den "Wurm" in meinem code entdecken und danke auch schoneinmal im vorraus! Code: [AUSKLAPPEN] Graphics3D 800,600,16 SetBuffer BackBuffer() ;global var Global info.baum Global tree ;----------------------- ;des type zeug Type baum Field b_x Field b_y Field b_z Field tree ;muss man den baum hier mit aufnehmen ? End Type Restore baum_pos Read anzahl For i = 1 To anzahl info.baum = New baum Read b_x , b_y , b_z info\b_x = b_x info\b_y = b_y info\b_z = b_z Next ;--------------------------- ;bäume erstellen For info.baum = Each baum tree = CreateSphere() EntityType tree,type_baum PositionEntity tree, info\b_x , info\b_y , info\b_z Next ;-------------------------- ;sachen erstellen / camera / boden / SPIELER Global cam = CreateCamera() MoveEntity cam,0,10,-10 Global boden = CreatePlane() EntityColor boden,0,55,0 EntityType boden, type_boden Global player = CreateSphere() EntityColor player,255,0,255 EntityType player, type_player PositionEntity player,0,1,0 ;schleife---------------------- While Not KeyHit(1) move_player() move_cam einsammeln() UpdateWorld RenderWorld Flip Wend End ;------------------------------- Function move_player() If KeyDown(200) Then MoveEntity player, 0,0, 0.1 If KeyDown(208) Then MoveEntity player, 0,0,-0.1 If KeyDown(203) Then TurnEntity player, 0, 2,0 If KeyDown(205) Then TurnEntity player, 0,-2,0 End Function ;---------------------------- Function move_cam() PointEntity cam,player,0 ;schicke cam einstellung ... :) End Function ;---------------------------- Function einsammeln() If EntityCollided(tree,type_player) Then ;wie geraten lasse ich baum mit type_player kolli.. FreeEntity tree ;dann das erstelle löschen ohne den type_baum zu killn End If ;rein theoretisch müsste das doch funzen ! aber warum nicht ? :( End Function ;--------------------------- ;die bäume Positionieren .baum_pos Data 3 Data 10,1,10 Data 15,1,10 Data 20,1,10 mfg Dottakopf |
||
- Zuletzt bearbeitet von Dottakopf am Fr, Jan 05, 2007 14:36, insgesamt einmal bearbeitet
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
da waren aber einige fehler drin!
Code: [AUSKLAPPEN] Graphics3D 800,600,16
SetBuffer BackBuffer() ;constanten Const TYPE_PLAYER=1,TYPE_BODEN=2,TYPE_BAUM=3 ;----------------------- ;des type zeug Type baum Field b_x Field b_y Field b_z Field tree End Type Restore baum_pos Read anzahl For i = 1 To anzahl info.baum = New baum Read b_x , b_y , b_z info\b_x = b_x info\b_y = b_y info\b_z = b_z Next ;--------------------------- ;bäume erstellen For info.baum = Each baum info\tree = CreateSphere() EntityType info\tree,TYPE_BAUM PositionEntity info\tree, info\b_x , info\b_y , info\b_z Next ;-------------------------- ;sachen erstellen / camera / boden / SPIELER Global cam = CreateCamera() MoveEntity cam,0,10,-10 Global boden = CreatePlane() EntityColor boden,0,55,0 EntityType boden, TYPE_BODEN Global player = CreateSphere() EntityColor player,255,0,255 EntityType player, TYPE_PLAYER PositionEntity player,0,1,0 Collisions TYPE_PLAYER,TYPE_BAUM,1,2 Collisions TYPE_PLAYER,TYPE_BODEN,1,2 ;schleife---------------------- While Not KeyHit(1) move_player() move_cam einsammeln() UpdateWorld RenderWorld Flip cls Wend End ;------------------------------- Function move_player() If KeyDown(200) Then MoveEntity player, 0,0, 0.1 If KeyDown(208) Then MoveEntity player, 0,0,-0.1 If KeyDown(203) Then TurnEntity player, 0, 2,0 If KeyDown(205) Then TurnEntity player, 0,-2,0 End Function ;---------------------------- Function move_cam() PointEntity cam,player,0 ;schicke cam einstellung ... :) End Function ;---------------------------- Function einsammeln() For info.baum = Each baum If EntityCollided(info\tree,type_player) Then ;wie geraten lasse ich baum mit type_player kolli.. FreeEntity info\tree ;dann das erstelle löschen ohne den type_baum zu killn Delete info.baum End If ;rein theoretisch müsste das doch funzen ! aber warum nicht ? :( Next End Function ;--------------------------- ;die bäume Positionieren .baum_pos Data 3 Data 10,1,10 Data 15,1,10 Data 20,1,10 solltest dich echt nochmal mit Types etc. auseinander setzen! MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
WoW danke ! Du hast grad nen neuen Fan gewonnen ![]() Du hast recht mit types sollte ich mich nochmal auseinander setzten ! Kannte aber bisher auch nur die 2D type (delete usw. dingens) und da wars irgendie leichter. Naja erstmal ein rießen danke ! ich setz mich gleich mal hin und studire den code. mfg Dottakopf |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group