滑らかな弾の軌跡表現方法 [四聖龍神録2公式Twitter]

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

滑らかな弾の軌跡表現方法 [四聖龍神録2公式Twitter]

投稿記事 by Dixq (管理人) » 9年前

東方をプレイしていると、角度が80°位で飛んでくるとカクッカクッとしながら飛んでくるように見えます。
それはドット単位で移動させて描画させているために起きています。
つまり
dot.png
dot.png (31.91 KiB) 閲覧数: 884 回
このように斜めに移動する時にドットで表現するため、
角度が90°に近いと図中央のように見えてカクカクするわけです。

(今は東方が悪いとか、龍神録が良いとか言うものではないです)

これを龍神録では図右のように「ドットとドットの間に描画する」手法を用いて滑らかに移動させてみましょう。

まぁ答えは既にゲームプログラミングの館に書いてあるのでそのリンクを貼るだけなのですが。
http://dixq.net/g/04_04.html

方法としては、描画するメソッドである
DrawGraph(int x, int y, ...)
を、実数で座標を渡せる
DrawGraphF(float x, float y, ...)
に置き換えます。
これでドットとドットの間に描画命令をすることができるのですが、
これだけでは目に見えて効果が見えません。
バイリニア線形補間をする必要があります。
DXライブラリではこれが簡単で
SetDrawMode( DX_DRAWMODE_BILINEAR );
とかけばバイリニア線形補間で描画してくれます。

しかしドットバイドットで描画した方が綺麗に見えるものもあります。
なので、必要無くなったら
SetDrawMode( DX_DRAWMODE_NEAREST );
でもとに戻しておきましょう。

バイリニア線形補間とニアレストネイバーの違いはリンク先で確認してください。
動画を見るとよくわかると思います。
最後に編集したユーザー Dixq (管理人) on 2016年3月01日(火) 22:43 [ 編集 1 回目 ]

コメントはまだありません。