東方をプレイしていると、角度が80°位で飛んでくるとカクッカクッとしながら飛んでくるように見えます。
それはドット単位で移動させて描画させているために起きています。
つまり
このように斜めに移動する時にドットで表現するため、
角度が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 );
でもとに戻しておきましょう。
バイリニア線形補間とニアレストネイバーの違いはリンク先で確認してください。
動画を見るとよくわかると思います。
滑らかな弾の軌跡表現方法 [四聖龍神録2公式Twitter]
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
滑らかな弾の軌跡表現方法 [四聖龍神録2公式Twitter]
最後に編集したユーザー Dixq (管理人) on 2016年3月01日(火) 22:43 [ 編集 1 回目 ]
コメントはまだありません。