sprite ausrichten

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Iguan

Betreff: sprite ausrichten

BeitragMo, Nov 13, 2006 23:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich möchte gerne ein Sprite an dem beliebig schrägen Boden meines Levels ausrichten..
das sprite hat ein entity radius, und bei kollision mit dem level mache ich:
Code: [AUSKLAPPEN]

TurnEntity b\entity,90-ASin(CollisionNZ(b\entity,i)),90+ACos(CollisionNY(b\entity,i)),0-ACos(CollisionNX(b\entity,i)),1


habe schon sehr lange rumprobiert mit:


Code: [AUSKLAPPEN]

TurnEntity b\entity, +asin,+asin, +acos
TurnEntity b\entity, +asin,+asin, -acos
TurnEntity b\entity, +asin,-asin, -acos
TurnEntity b\entity, -asin,-asin, -acos
TurnEntity b\entity, +acos,+asin, +acos
TurnEntity b\entity, +acos,-asin, -acos
usw...


mit oberen code funktioniert es beinahe, aber eben nur beinahe...

was ist da noch falsch??

vielen dank

mfg

Iguan

Iguan

BeitragDi, Nov 14, 2006 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm.. ich habs noch immer nicht hingekriegt... ich möchte dass mein blutsprite sich an der wand ausrichtet, und dort kleben bleibt..
das ausrichten müsste doch mit collisionNX, NY usw... machbar sein... oben ist mein ansatz..
oder sollte ich da linepick verwenden? könnt ihr mir sagen, was ich oben falsch mache?? irgendwie verwechsle ich die x-y-z- ebene... oder was?

PSY

BeitragDi, Nov 14, 2006 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Iguan hat Folgendes geschrieben:
Hmm.. ich habs noch immer nicht hingekriegt... ich möchte dass mein blutsprite sich an der wand ausrichtet, und dort kleben bleibt..
das ausrichten müsste doch mit collisionNX, NY usw... machbar sein... oben ist mein ansatz..
oder sollte ich da linepick verwenden? könnt ihr mir sagen, was ich oben falsch mache?? irgendwie verwechsle ich die x-y-z- ebene... oder was?


vielleicht hilft das hier:
https://www.blitzforum.de/foru...hp?t=20621

l8er,
psy

Iguan

BeitragDi, Nov 14, 2006 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, leider nicht..., da die textur des levelbodens gekachelt ist... und ich somit mit sprites arbeiten muss...

Iguan

BeitragDo, Nov 16, 2006 1:03
Antworten mit Zitat
Benutzer-Profile anzeigen
So,! Da mir bis jetzt noch niemand wirklich helfen konnte, poste ich hier mal ein Beispielcode, damit ihr versteht, worum es geht:

Code: [AUSKLAPPEN]

Graphics3D 800,600,32,2

AmbientLight 150,150,150
cam = CreateCamera()
PositionEntity cam,0,8,-30
TurnEntity cam,20,0,0

;Level erstellen
Boden = CreatePlane()
;ScaleEntity Boden,30,5,30
PositionEntity Boden, 0,0,0
EntityColor Boden,0,255,0
EntityType Boden,1
Cube = CreateCube()
ScaleEntity Cube,10,10,10
TurnEntity Cube,45,45,45
PositionEntity Cube,0,-5,0
EntityColor Cube,255,255,255
EntityType Cube,1


;Sprite erstellen
Blut = CreateTexture(32,32)
SetBuffer TextureBuffer(Blut)
Cls
Color 255,0,0
Oval 1,1,30,30,1
SetBuffer BackBuffer()
BlutSprite = CreateSprite()
SpriteViewMode BlutSprite,1
ScaleSprite BlutSprite,2,2
EntityTexture BlutSprite, Blut
EntityFX BlutSprite,16
PositionEntity BlutSprite, 0,5,0
EntityBlend BlutSprite,3
EntityRadius BlutSprite,.05
EntityType BlutSprite,2


Collisions 2,1,2,1
;WireFrame 1
While Not KeyHit(1)
Cls

col=CountCollisions(BlutSprite)

For i=1 To col
  If CollisionEntity(BlutSprite,i) <> 0 Then
    SpriteViewMode BlutSprite,2
    ;***********************************************************
    ;HIER MUSS DER FEHLER IRGENDWO SEIN....
    ;???       
     ;RotateEntity BlutSprite,90-ASin(CollisionNZ(BlutSprite,i)),90+ACos(CollisionNY(BlutSprite,i)),0-ACos(CollisionNX(BlutSprite,i)),1
    ;???
    ;RotateEntity BlutSprite,90-ACos(CollisionNY(BlutSprite,i)),+ASin(CollisionNX(BlutSprite,i)),+ACos(CollisionNX(BlutSprite,i)),0
    RotateEntity BlutSprite,ASin(CollisionNY(BlutSprite,i)),90+ACos(CollisionNX(BlutSprite,i)),90+ACos(CollisionNX(BlutSprite,i)),1
     ;RotateEntity BlutSprite,90-ASin(CollisionNZ(BlutSprite,i)),90+ACos(CollisionNY(BlutSprite,i)),0-ACos(CollisionNX(BlutSprite,i)),1
     ;***********************************************************
   EndIf
Next

If MouseHit(1) Then PositionEntity BlutSprite,Rnd(-12,12),24,Rnd(-12,12):SpriteViewMode BlutSprite,1:EntityType BlutSprite,2

If KeyDown(203) Then CamWinkel# = CamWinkel# - 2
If KeyDown(205) Then CamWinkel# = CamWinkel# + 2
If KeyDown(200) Then Hoehe# = Hoehe# + 1
If KeyDown(208) Then Hoehe# = Hoehe# - 1
PositionEntity cam,Cos(CamWinkel#)*30,Hoehe#+5,Sin(CamWinkel#)*30
PointEntity cam,Cube

TranslateEntity BlutSprite,0,-.7,0   
UpdateWorld
RenderWorld   

Text 20,20,"Pfeiltasten = Kamerasteuerung    Linke Maustaste = Bluttropfen abwerfen"

Flip   
Wend
End


bin jetzt schon sehr lange an diesem Problem. Ich schaff es einfach nicht, das sprite richtig zu drehen, (x-y-z achse).
Der Tropfen sollte Flach auf einer X-Beliebigen Fläche aufliegen... Wenn ein Teil des Tropfens über eine Kante herausragt, stört mich das nicht..


bitte helft mir!


MFG


Iguan
 

Dreamora

BeitragDo, Nov 16, 2006 8:59
Antworten mit Zitat
Benutzer-Profile anzeigen
AlignToVector mit der Normale hat auch nicht geholfen? (Vorausgesetzt immer, das du beim Sprite Mode nicht den gewählt hast der ihn immer auf die Cam ausrichtet, sonst nützt alles nichts ^^)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Iguan

BeitragDo, Nov 16, 2006 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
schau dir bitte mal den code an.. Spriteviewmode ist wenn der tropfen runterfällt = 1 und wenn er aufgeschlagen ist, = 2.
Es stimmt nur mit der einen zeile etwas nicht...(im code markiert)... den winkel kann ich doch mit asin und acos berechnen..., da collisionnx, ny usw einen cos oder sin wert lierfern... Rolling Eyes Question

und noch was: was versteht man unter "Normalen"??

EDIT:

cooool! ich habs hingekriegt mit aligntovector!!!!
vielen dank Dreamora!!! Very Happy

skey-z

BeitragDo, Nov 16, 2006 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
eine normale ist die Ausrichtung eines Polygons, also in welche Richtung die Oberfläche zeigt
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group