Sichtbarkeit von Sprite prüfen
Übersicht

funkmaster5000Betreff: Sichtbarkeit von Sprite prüfen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo an alle,
ich schaffe es einfach nicht zu überprüfen, ob ein Sprite von der Kamera gesehen werden kann oder nicht. Befindet sich das Sprite seitlich der Kamera oder dahinter, erhalte ich das richtige Ergebnis. Aber sobald es in einer Linie mit der Kamera, aber hinter einem Cube/der Wand ist, erhalte ich dennoch die Rückmeldung, dass das Sprite sichtbar ist. Zuerst habe ich gedacht, dass es vielleicht damit zu tun hat, dass die Ecken überprüft werden. Wenn diese sich mit den Maßen des Cubes decken, könnte das vlt als "sichtbar" gewertet werden. Also habe ich das Sprite runterskaliert, aber mit dem selben Ergebnis. Hier mein Testcode: Code: [AUSKLAPPEN] Graphics3D 640,480,32,2
SetBuffer BackBuffer() cam = CreateCamera() MoveEntity cam,0,0,-4 cube = CreateCube() tex = LoadTexture("brix.jpg") tex2 = LoadTexture("grass.jpg") EntityTexture cube,tex ene = LoadSprite("skelett.jpg") MoveEntity ene,0,0,10 AmbientLight 255,255,255 While Not KeyHit(1) If KeyHit(200) Then MoveEntity cam,0,0,1 End If If KeyHit(208) Then MoveEntity cam,0,0,-1 End If If KeyHit(205) Then rotate = rotate - 90 RotateEntity cam,0,rotate,0 End If If KeyHit(203) Then rotate = rotate + 90 RotateEntity cam,0,rotate,0 End If UpdateWorld RenderWorld If EntityInView(ene, cam) = 1 Then Text 0, 0, "Objekt sichtbar" Flip Wend |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
EntityInView![]() |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gibt es denn einen analogen Befehl? | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht hilft dir EntityVisible![]() |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das tut er mit Sicherheit! Welche Auswirkungen hat EntityPickMode und wie würde der Befehl auf mein Beispiel angewandt ausschauen? Muss ich das für jeden Cube auf der Map einstellen? Also:
Code: [AUSKLAPPEN] EntityPickmode cube,2,1 ?
|
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das sind Fragen, die du leicht beantworten kannst, wenn du dir das Beispiel zu den Befehlen ansiehst und etwas herum experimentierst. | ||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das habe ich, funktioniert auch wunderbar ![]() Allerdings wertet der Befehl das Sprite noch als sichtbar und zwar auch, wenn dieses hinter/neben der Camera ist. Mache ich was verkehrt, oder muss ich eine zusätzliche if-Abfrage nach der Position einbauen? |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe keinen der beiden Befehle verwendet, kann also auch völliger Blödsinn sein: Spricht etwas dagegen, beide Befehle mittels And verknüpft zu verwenden? | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das weiß ich nicht, hat jedenfalls bei mir nicht funktioniert! | ||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
EntityVisible ist vermutlich nur ein Raycast (Linien-Test), unabhängig ob die Objekte im Sichtbereich der Kamera sind oder nicht.
EntityInView prüft ob ein Objekt im Sichtbereich der Kamera ist. Folglich müsste es schon funktionieren wenn man beide Funktionen And-verknüpft: Code: [AUSKLAPPEN] If EntityInView(ene, cam) And EntityVisible(cam, ene) Then Text 0, 0, "Objekt sichtbar"
|
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
das ist das, was ich oben gemeint habe. Ansonsten könnte man noch die Winkel vergleichen, um zu sehen, ob das Objekt zu einem schaut. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group