ゲムキTOP > ブログTOP

ハルポップの徒然雑記

ためになる話、どうでもいい話など

マリオの完コピvol.15 スーパーマリオ化

ハルポップ 2016-05-18 22:04:02 pv:2217
クッパ「き・・きさまはマリオだろ!?ち・・ちがうのか・・!?」

「ちがうな・・オレは・・スーパーマリオだ!」



スーパーマリオはスプライトのサイズが変わる。
これが非常に問題で、ただ単に画像を入れ替えただけでは、スプライトの中心点が中央なので地面にめりこんでしまう。
スーパーマリオの時だけ中心点を変えるのか、それとも全部統一して中心点を下に持ってくるのか。

中心点を変更することによっての弊害は、拡大縮小と回転。
真ん中じゃないとうまく出来ない。
左右のポーズ反転はX軸にスケールを-1掛けているので、中心点のXは中央がいい。

Y軸に至っては特に反転することもないし、拡大縮小もしないので、中心点を全部共通で(0.5,0)にすることに決めた。

マリオの完コピvol.14 スーパーキノコ

ハルポップ 2016-05-17 23:08:35 pv:2079


キノコが現れる演出、これも絶妙によく出来ている。
敵キャラやアイテムは本来、背景より前面に出ないといけない。
それなのに?ブロックを叩いた時、キノコは?ブロックの背面からニョキニョキと出てくる。
つまり、キノコが現れてる最中はBGより背面に描画し、現れたら前面に変更しているということだ。

cocos2d-xでは
node->reorderChild
メソッドで優先度の変更が出来る。

あと本来?ブロックを叩いたら少し上に飛び出るが、動きがあるのでその最中だけBGからスプライトに変えているようだ。
そういった工夫がすごい。

他にもそういうBGとスプライトの工夫はこちらの動画で見れる。
http://www.nicovideo.jp/watch/sm13640458

マリオの完コピvol.13 レンガブロック

ハルポップ 2016-05-16 21:27:28 pv:2263
MySpriteを継承したRengaクラスを作った。
今後のキャラはこのやり方で増やしていこう。
?ブロックやクリボーは間に合わせで作ったのでまたQBlockクラスやKuriboクラスで作り変えないと。
C++だからこうやって作りやすいように作れるけど、当時のファミコンのアセンブリ言語だとどれほど難解だったんだろう。

マリオの完コピvol.12 クリボー

ハルポップ 2016-05-15 23:02:11 pv:3165
クリボーを作ってみる。
その前にスプライト系のクラスを整理。
Spriteクラスを継承したMySpriteクラスを作り、そこに速度や状態の変数を設けた。
参考資料を探していたら、「Javaでゲーム作りますが何か」というページがあり、そこの横スクロールアクションの項目が参考になった。
http://aidiary.hatenablog.com/entry/20040918/1251373370

手持ちの本は、RPGやシューティングやアドベンチャーはあるのになぜかアクションだけない。アクションが意外と難しいという事かもしれない。

そしてこのページの下のほうのリンク集で「Javaで RPGを作ろう!」ってあったがここはまさかの自分のページである。
「マップスクロールが参考になった」と紹介があったけど、あのやり方でいいんだろうか。今ならまた違うやり方になるかも。今回のマリオはレイヤーの考えがあるので簡単に実装できている。

マリオの完コピvol.11 リセット

ハルポップ 2016-05-14 23:12:39 pv:2001
マリオが死んだ後にステージを再セットするように。
初期化とメモリ解放を今のうちきちんと作っておかないと、後々泣く事になる。
Node::removeAllChildren
というメソッドで一括してノードの解放ができるから便利。