[リストへもどる]
一括表示
タイトルSpriteScaleメソッドの仕様に関して
記事No34
投稿日: 2007/09/15(Sat) 14:14:39
投稿者磐田
こんにちは、磐田です。
たびたび、お世話になっております。

サンデープログラマーとして、休みの日は、
田村様のライブラリで楽しくゲームを作成させて頂いております。

簡単な物ながら、自分でゲームを作るのは夢だったので、
感謝しております。

さて、ゲームを作っていて感じたのですが、
手前に、背後から見た飛行機のキャラクターを置き、
奥に、船の絵のキャラクターを置いて、
飛行機が奥にある船にグングン近づく演出を
(擬似3Dとでも申しましょうか)行いました。

用意されているSpriteScaleメソッドで船を拡大したところ、
船のスプライトは左上を基点に拡大するため、
画像が右下に大きくなり、中心から逸れていってしまいます。

拡大と同時に船の画像を左上にずらし、
補正する方法も考えたのですが、
画像の拡大率が変わると、ずらす率も変化するため、
吸収するのは難しいと思いました。(私だけかも知れませんが)

SpriteRotationメソッドでは、回転する座標を明示的に
設定できますが、SpriteScaleメソッドでも、
スプライトの中央を基点に拡大したり、
画面の任意の座標を基点に拡大することは難しいでしょうか?

処理の内容を知らないばかりに、
無茶難題を言っているかもしれませんが、
ご回答頂けたら幸いです。

以上、よろしくお願い致します。

タイトルRe: SpriteScaleメソッドの仕様に関して
記事No35
投稿日: 2007/09/16(Sun) 16:25:21
投稿者田村(管理人)
磐田さん、こんにちは。

スプライトの任意の座標を基点に拡大することについて
若葉ヘルパーのソースプログラムをいじってみましたが
すぐの機能実装は難しいです。

> 拡大と同時に船の画像を左上にずらし、
> 補正する方法も考えたのですが、
> 画像の拡大率が変わると、ずらす率も変化するため、
> 吸収するのは難しいと思いました。

現状はこの方法で実現するしかないようです。
以上、よろしくお願いします。

タイトルRe^2: SpriteScaleメソッドの仕様に関して
記事No36
投稿日: 2007/09/24(Mon) 21:14:46
投稿者磐田
田村様、こんにちは
遅れながら、ご返答ありがとうございます。

実装に関しては承知いたしました。

拡大処理は、基本的に左上を基点とするようなので、
やはりユーザーが処理すべきなのかなと
思っております。

描画座標: x, y
元の画像サイズ: ow, oh
拡大後の画像サイズ: w, h
新しい描画座標: nx, ny

nx = x - (w-ow)/2
ny = y - (h-oh)/2

というロジックで、画像の中心を基点に拡大することは
できそうなので、挑戦してみたく存じます。

画面の任意の座標を基点に拡大する方法は
まったく想像できませんが。。。

初心者のユーザーからすると、やはり
標準で指定できると嬉しいかなと思っております。(^^;


若葉ヘルパーには、何かと助けて頂いております。
今後とも、田村様のご活躍を期待しております。

以上、失礼致します。

> 磐田さん、こんにちは。
>
> スプライトの任意の座標を基点に拡大することについて
> 若葉ヘルパーのソースプログラムをいじってみましたが
> すぐの機能実装は難しいです。
>
> > 拡大と同時に船の画像を左上にずらし、
> > 補正する方法も考えたのですが、
> > 画像の拡大率が変わると、ずらす率も変化するため、
> > 吸収するのは難しいと思いました。
>
> 現状はこの方法で実現するしかないようです。
> 以上、よろしくお願いします。