camera=EntityCreateCamera()
light=EntityCreateBumpLight()
player=EntityLoadMesh ("player.ddd")
player_texture = EntityLoadTexture("player.bmp")
player=EntityLoadMesh ("dreh.ddd")
dreh_texture = EntityLoadTexture("dreh.bmp")
EntityApplyTexture(player, player_texture, EntityMakeNullTexture() )
EntityApplyTexture(dreh, player_texture, EntityMakeNullTexture() )
EntityPosition(player, 0, 0, 30)
EntityPosition(dreh, 0, 0, 10)
EntityPosition(camera, 0, 2, 5)
EntityParent(camera, light)
EntityEnable(camera, TRUE)
WHILE TRUE
IF KEY(49)
EntityMove(player, 1, 0, 0)
ENDIF
IF KEY(50)
EntityMove(player, -1, 0, 0)
ENDIF
EntityDrawSystem()
SHOWSCREEN
WEND
Bei diesem Code bewegt sich beim Drücken der Tasten "m" und "n" auf der x achse hin und her.
Ich muss die camera auf der x achse erst um 180 grad drehen, damit sie richtig schaut.
X_CAMERAUP o.Mg[4], o.Mg[5], o.Mg[6] würde dies sicher ändern, aber ich weiß nicht wie.
allg. scheint das mit dem koordinatensystem nicht so rund zu laufen, gerade im bezug auf die camera.(beim ES)
Entweder ich spinne, oder EntityRotate, EntityAlign und auch die Cameraerstellung haut nicht hin.
Also das haut alles nicht so hin.
Hier probiert mal: http://www.zshare.net/download/135536311d6d123f/
Schaut auf die winkel und entfernungen, oder ich bin einfach zu blöd dazu.
das hier soll die camera drehen, und den winkel zu player anzeigen.
ich bin wohl zu doof dafür....
// Project: testy
// Start: Thursday, June 12, 2008
// IDE Version: 5.254
camera=EntityCreateCamera()
light=EntityCreateBumpLight()
player=EntityLoadMesh ("player.ddd")
player_texture = EntityLoadTexture("player.bmp")
EntityApplyTexture(player, player_texture, EntityMakeNullTexture() )
EntityParent(light, camera)
EntityPosition(player, 0, 0, 10)
EntityPosition(camera, 1, 1, 1)
EntityRotate(camera, 0, 0, 0)
EntityEnable(camera, TRUE)
WHILE TRUE
IF KEY(49)
EntityRotate(camera, 0, 1, 0)
ENDIF
IF KEY(50)
EntityRotate(camera, 0, -1, 0)
ENDIF
EntityDrawSystem()
LOCAL x,y,z,xdiff,ydiff,zdiff,xangle,yangle,dist
x = EntityGetX(player) //
y = EntityGetY(player) // Koordinaten target Entity
z = EntityGetZ(player) //
xdiff = x-EntityGetX(camera) //
ydiff = y-EntityGetY(camera) // Entfernungen
zdiff = z-EntityGetZ(camera) //
yangle=MOD((ATAN(zdiff,xdiff)+360),360)
X_MAKE2D
PRINT yangle, 100, 100
PRINT xdiff, 100, 110
PRINT ydiff, 100, 120
PRINT zdiff, 100, 130
PRINT x, 100, 140
PRINT y, 100, 150
PRINT z, 100, 160
SHOWSCREEN
WEND
Heiko, die Entitysachen bitte in den Thread der Entitys, danke !
ich denke da wäre ein seperates unterforum passend.
so sortiert nach BUGS, Befehle, usw.
kannst du sowas machen?
ich gebs langsam auf, ich bekomm das nicht hin.
Um was gehts jetzt im spezielen Heiko?
Ich hab grad zeit und kann dir helfen ;)
Alsoooooooo
Ich will grundlegend ein Entity (für den anfang die kamera, später heute wollte ich auch eine andere entity) an einer anderen ausrichten.
D.h. die camera als beispiel soll immer in richtung anderer entity schauen.
Sozusagen ein Pointentity wie bei bb bekannt.
Aber allein an der kamerapositionierung und die winkelberechnung zum zielentity scheitert es.
stell dir vor, bei einem formel1 rennen, wo die kamera an der seite steht und den autos folgt.und es soll auch funktionieren, wenn sich die camera dazu noch bewegt.
und alles mit dem ES.
wobei Z-Roll unwichtig ist, es soll sich nur links/rechts oben/unten relevant ist.
wie bei dem beispiel mit den zwei bildern aus dem anderen thread, nur eben im 3d raum, ich raffs nicht.
probiers mal mit dem ES, wenn du das schaffst, biste mein held.
p.s. entityrotate ist das gegenstück zu turnentity bei bb, falls du das nicht weißt.
Jopp schon verstanden....
Ich schau was ich machen kann!
suuuuper, ich seh selber nicht mehr durch, da bin ich mal gespannt.
und schau mal nach der positionierung bei entitycreatecamera() , wenn ich mich nicht irre, läuft da was schief, aber rotate- und alignentity sind auch, ach ich weiß nichts mehr.
erstmal nen kaffee, ma sehen was du zustande bringst.
Hier ma nen Code aus BM´s minib3d:
Method PointEntity(target_ent:TEntity,roll#=0)
Local x#=target_ent.EntityX#(True)
Local y#=target_ent.EntityY#(True)
Local z#=target_ent.EntityZ#(True)
Local xdiff#=Self.EntityX(True)-x#
Local ydiff#=Self.EntityY(True)-y#
Local zdiff#=Self.EntityZ(True)-z#
Local dist22#=Sqr((xdiff#*xdiff#)+(zdiff#*zdiff#))
Local pitch#=ATan2(ydiff#,dist22#)
Local yaw#=ATan2(xdiff#,-zdiff#)
Self.RotateEntity pitch#,yaw#,roll#,True
End Method
wobei eben rotate hier EntityAlign entspricht.ich glaub die distanzen werden nicht richtig berechnet, oh man ich kauf mir ein tafelwerk.