Zufalls Objekt platzieren
Übersicht

![]() |
AnaBetreff: Zufalls Objekt platzieren |
![]() Antworten mit Zitat ![]() |
---|---|---|
Heyho,
ich will gerade eine Function schreiben, die zufällig Objekte auf der Karte verteilt (3d) das sie nett über die x und z achse verteilt sind stellt sich natürlich nicht als so schwierig heraus, weil da ja einfache Zufallswerte reichen, für den y Wert brauch ich dann ja schon etwas exaktes damit die Dinge nicht in der Luft hängen oder im Boden stecken. Dafür hatte ich mir gedacht das ich sie weit über der Karte, in praktisch nicht erreichbaren Höhen platziere und sie dann einfach nach unten bewege, damit sie dann von der Kollisionsabfrage auf gehalten werden, sobald sie den Boden berühren. Leider rutschen sie dann einfach weiter und bewegen sich in Täler oder ins Wasser, irgendwo hab ich schon mal gesehen das man das slide in BB aussschalten kann für bestimmt entities, kennt jemand den Befehl zufällig, oder eine geschicktere Lösung? So richtig, richtig elegant kommt mir das nämlich noch nicht vor Hier der Code: Code: [AUSKLAPPEN] Function randomtree(baumanzahl) random = 1 ;Wichtig für die Camerasteuerung For i = 1 To baumanzahl + 1 bauen = 12 ; Bauen 12 entspricht dem Objekt "Baum" objekterschaffen() ; Function die eine Entity nach dem Wert von bauen erstellt und mit ; Attribut en versieht kartengrosse = 2000 ; und den zuplatzierendesgebaude (globale Variable) definiert nummerierung = nr - 1 ; Glaube das ist nicht mehr nötig muss ich noch prüfen^^ For ob.objekt = Each objekt If ob\id = zuplatzierendesgebaude Then ;Sucht neues Objekt ob\x = Rand(0,kartengrosse): ob\z = Rand(0,kartengrosse) : ob\y = 100 PositionEntity ob\modell,ob\x,ob\y,ob\z EntityAlpha ob\modell,1 EntityPickMode(ob\modell,2) EntityColor ob\modell,255,255,255 TranslateEntity ob\modell,0,-100,0 ; Setzt entity auf y = 0 außer terrain ist im Weg ob\y = EntityY (ob\modell) If ob\y <= meersspiegel Then Delete ob.objekt ; Löscht das Objekt falls es tiefer ist als der Meeresspiegel EndIf Next Next End Function |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
CollisionNZ![]() Bei Collisions ![]() Sollte dir helfen, deine Angehensweise ist richtig mfg |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei einem BlitzTerrain kann man auch einfach mittels TerrainY![]() ![]() ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ging ja flott! super danke ich werd mir mal beides anschauen und dann entscheiden wie ich es anstelle
Edit: Was gibt man den bei der Y - Koordinate an, bei TerrainY, die kenn ich doch gar nicht? |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Khalantes hat Folgendes geschrieben: Edit: Was gibt man den bei der Y - Koordinate an, bei TerrainY, die kenn ich doch gar nicht? Da kannst du einfach 0 einsetzen. Eigentlich ein überflüssiger Parameter, oder irre ich mich da? |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaub schon, verschiedene Werte hatten bei mir noch nie unterschiedliche Auswirkungen ![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vermutlich, wenn das Terrain rotiert worden ist. | ||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nun hab ich das ganze soweit
Code: [AUSKLAPPEN] For i = 1 To baumanzahl + 1 bauen = 12 ; Bauen 12 entspricht dem Objekt "Baum" objekterschaffen() ; Function die eine Entity nach dem Wert von bauen erstellt und mit Attributen versieht kartengrosse = 2000 ; und den zuplatzierendesgebaude (globale Variable) definiert nummerierung = nr - 1 ; Glaube das ist nicht mehr nötig muss ich noch prüfen^^ For ob.objekt = Each objekt If ob\id = zuplatzierendesgebaude Then ;Sucht neues Objekt ;Repeat xwert = Rand(EntityX (figur) -250,EntityX (figur) + 250) ;platziert um die Figur herum zwert = Rand(EntityZ (figur) -250,EntityZ (figur) + 250) ywert= TerrainY (terrain,xwert,0,zwert) ;Until ywert> 0 ob\x = xwert : ob\z = zwert : ob\y = ywert PositionEntity ob\modell,xwert,ywert,zwert EntityAlpha ob\modell,1 EntityPickMode(ob\modell,2) EntityColor ob\modell,255,255,255 EndIf Next Next Allerdings sind die Objekte alle in der Luft und je öfter die Funktion genutzt wird, desto höher schweben sie... Kann wer was in der Funktion erkennen warum das so ist oder muss ich mit einem Seiteneffekt rechnen? Xwert,ywert,zwert sind jedenfalls lokal und es werden auch nicht alle ob.objekt nach oben verschoben oder sowas. Edit: wo gibs den die schicken Mützen? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group