Linepick.. irgendwas funktioniert nicht richtig

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Infected

Betreff: Linepick.. irgendwas funktioniert nicht richtig

BeitragSo, Apr 21, 2013 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Vorab, es handelt sich zwar um miniB3D, aber es ist ganz sicher kein miniB3D-Problem, sondern einfach nur ein Denkfehler(o.ä.).
Momentan versuche ich in einer 3D Welt zufällig auf dem Terrain(Mesh) Steine zu verteilen, hier mal der relevante Code:


Code: [AUSKLAPPEN]

Type MapObjects

   Field ObjType:Int    ' 1 Baum, 2 Stein
   Field mesh:TEntity
   Field x:Float       ' Postionsvariablen
   Field y:Float       ' "
   Field z:Float       ' "
   Field rotation:Float    ' Rotation des Objektes
   Field id:Int       ' Objekt-Id des Objektes, damit wird das Objekt identifiziert      
   Field state:Int       ' Status des Objektes
   
End Type

Global eWorld:TMesh = LoadMesh("data/terrain/island.b3d")
ScaleEntity eWorld,11,11,11
PositionEntity eWorld,-550,-1000,-2000
EntityPickMode eWorld,2
EntityFX eWorld,1
EntityType eWorld,2


For stones = 1 To 20

   stone:MapObjects = New MapObjects
   stone.mesh = CopyEntity(stoneMesh)
   stone.z# = Rnd(-1500,3300)
   stone.x# = Rnd(-300,4600)
   
      LinePick(stone.x#,300,stone.z#,stone.x#,-3100,stone.z#,1)
      
      'Print "stone nr:" +stones
      'Print "stone.x: " +stone.x#
      'Print "stone.z: " +stone.z#
      'Print "stone.y: " +PickedY#()
      
   stone.y# = PickedY#()
   stone.id = stones
   stone.state = 1
      PositionEntity stone.mesh,stone.x#,stone.y#,stone.z#
Next



Ansich klappt es soweit, aber die Steine verschwinden mal ein Stück im Boden, mal komplett.. mal fliegen sie in der Luft.. ich weiß einfach nicht mehr weiter.. Neutral
Vielleicht sieht jemand was hier falsch ist.

Xeres

Moderator

BeitragSo, Apr 21, 2013 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.

Ich würde es mit dem Äquivalent von TerrainHeight (Mal Skalierung usw.) probieren.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragSo, Apr 21, 2013 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
1.
ist die Angabe von radius# wirklich sinnvoll?

2.
ersetze mal testhalber

BlitzBasic: [AUSKLAPPEN]
stone.mesh = CopyEntity(stoneMesh)



durch

BlitzBasic: [AUSKLAPPEN]
stone.mesh = CreateCube()
 

Infected

BeitragSo, Apr 21, 2013 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Selbes ergebnis, einzelne Würfel sitzen perfekt, andere sind fast komplett im Boden verschwunden..
http://www.xup.in/dl,80567759/cubetest.png/

TerrainHeight funktioniert bei nem Meshterrain nicht.
Und Meshheight gibt anscheinend nur den höchsten Punkt aus.
Die Angabe von #Radius ist auch nur ein Test, habs mit 0 und 1 probiert, standart ist für sowas 0 bei mir Wink

Tankbuster

BeitragSo, Apr 21, 2013 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja, das sieht entweder nach Rundungsfehler aus, aber da das nicht so ist, vermute ich mal, es liegt an LinePick. Hast du mal einen Radius von 0.01 oder ähnliches Probiert?

Bei einem 1-Einheiten dicken Strahl ist es jawohl klar, dass keine vernünftigen Ergebnisse rauskommen.

Oder versuch es mal so:

Code: [AUSKLAPPEN]

[....]
   stone.x# = PickedX#()
   stone.y# = PickedY#()
   stone.z# = PickedZ#()
   stone.id = stones
   stone.state = 1
PositionEntity stone.mesh,stone.x#,stone.y#,stone.z#


Weil PickedX() und PickedZ() sich von stone.x und stone.z unterscheiden können, da der Radius des Strahls nicht 0 ist Wink


EDIT: Und im Boden ist klar.. zu hohe Steigung des Terrains, der Würfel kann nichts dafür ^^
Twitter
Download Jewel Snake!
Windows|Android

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group