hgimg3 に fvface という命令があるので、移動前の座標と移動後の座標から角度を求め、その角度に従えばよいです。
#include "hgimg3.as"
hgini
_y = 200.0
_z = 240.0
u0 = 1.0 ; 単位[Pix/s]
u1 = 0.01
// 着陸までの時間
T = 2.0*_z/(u0 + u1)
cammode CAM_MODE_NORMAL
setdir HGOBJ_CAMERA, 0, -20, 0
setpos HGOBJ_CAMERA, xx, -_y, _z
setefx HGOBJ_CAMERA, 1.28539816, 0.5f, 420.0f ; fov,near,far
; SKY:青空
;
chdir dir_exe + "/sample/hgimg3"
addxfile m_sky, "skybox.x"
modelshade m_sky,0
regobj sky, m_sky
setscale sky,30,30,30
setpos sky,0,20,0
setefx sky,$500 ; Zバッファを更新しない
objproj sky,1 ; 通常のZクリップを無効にする
; BG:地面
;
addxfile m_xmodel,"sb_bg1.x"
modelshade m_xmodel,0
regobj b_obj, m_xmodel
setpos b_obj,0,80,100
setscale b_obj, 2,2,2
repeat T
z = -_z + u0*cnt - (u0 - u1)*cnt*cnt/T/2
y = 2.0*_y*(z/_z)*(z/_z)*(z/_z) + 3.0*_y*(z/_z)*(z/_z)
;または
; #define PI 3.14159265358979
; y = _y/2*(cos(PI/_z*z + PI) + 1)
/* ■ここから本題 */
// 移動前の座標を取得
getpos HGOBJ_CAMERA, xx, yy, zz
// 移動後の座標をベクトルに変換
fvset fv, xx, -y, -z
// 移動後の座標から移動前の座標を直線上に見る角度取得
fvface fv, xx, yy, zz
// セット
setang HGOBJ_CAMERA, fv
/* ■ここまで */
setpos HGOBJ_CAMERA, xx, -y, -z
hgdraw
hgsync 15
loop
hgbye
途中の式は、(始点と終点での傾きが = 0)という条件で、3次式または三角関数で軌跡をとったものです。
/* ■ここから本題 */ 〜 /* ■ここまで */
を消してみると、その働きがわかります。