sprite ausrichten
Übersicht

![]() |
IguanBetreff: sprite ausrichten |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
nein, leider nicht..., da die textur des levelbodens gekachelt ist... und ich somit mit sprites arbeiten muss... | ||
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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... ![]() ![]() und noch was: was versteht man unter "Normalen"?? EDIT: cooool! ich habs hingekriegt mit aligntovector!!!! vielen dank Dreamora!!! ![]() |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group