検索:
Scrachでマリオ系のアクションゲームを作る③

前回は主人公をジャンプさせる方法を紹介しました。

次にステージを作る方法を紹介します。

Tiledのインストール

ステージの作成には第1回でも紹介したSuperpowers Asset Packを活用してみたいと思います。

ステージの編集ソフトは Tiled というフリーソフトを使うと簡単に行えます。

Tiled をダウンロードしたら立ち上げて、新しいプロジェクトを作成します。
次に新しいマップを作成します。

Scrachの画面サイズは「480 × 360」なので、分かりやすくそれに合わせたステージを作成します。

今回素材として使用する Superpowers Asset Pack の最小単位に合わせて

・タイルの大きさ:幅 8 px、高さ 8 px
・マップの大きさ:「固定」⇒「幅 60:タイル(480ピクセル)」×「高さ 45:タイル(360ピクセル)」

Superpowers Asset Packのタイルセットを開きます。

↓タイルセットの場所↓

(任意のパス)/superpowers-asset-packs-master/prehistoric-platformer/background-elements/tileset-1.png

※タイルファイルを選択する際、「マップに埋め込み」にチェックを入れます。

タイルファイルを開くと下図のように、右下の「タイルセット」の領域に素材が表示されます。

タイルセットをマウスでドラッグして、使用したい領域分を選択します。

左クリックで、ハンコを押すようにペタペタと好きなタイルを貼り、ステージを作っていきます。

ステージが完成したら、画像ファイルとして保存します。

C#でList型の2次元配列を使う

行ごとに大きさが変動するような2次元配列を使いたいときは、List型の2次元配列を使うと便利です。

下記のように使用します。

       public void DataGet(string[] data_lines) {

            //int j = 0;
            Boolean is_first = true;

           // 最初のドラッグ&ドロップで取得するデータ
            if (IsData == false)
            {
                this.titles = data_lines[0].Split(',');   // 先頭行を1次元配列で取得
            }

            list_num = data_lines.Length;


            foreach (string line in data_lines)
            {
                List<int> Items = new List<int>();

                // データを一次元配列に入れる
                string[] cells = line.Split(',');   // cells[]に各行の値1次元配列で取り込む

                if (is_first == true)
                {
                    is_first = false;
                }
                else {
                    /* データ */
                    for (int j = 0; j < cells.Length; j++)
                        if (cells[j] == "") {
                            break;
                        }else
                        {
                        Items.Add(Convert.ToInt16(cells[j]));
                    }
                    pList.Add(Items);
                }
            }
      }    

リストのサイズの最大値を取得する場合は下記のように記述します。

                PS_F.DataGet(data_lines);
                int ColNumMax= PS_F.pList.Count;//50
                int ColNumMin = PS_F.pList.Max(innerList => innerList.Count);

データの指定方法は下記のように記述します。

int value = PS_F.pList[3][7];  // 3行目の7列目を取得する
Githubを使ったチーム開発①

Githubを使ったチーム開発の方法を簡単に説明します。

1. Github でリモートリポジトリを作成

  • リモートリポジトリとは・・・
    他のコンピュータまたはネットワーク上にあるフォルダ・ファイルの保管場所のこと
  • 作成方法
    • github の画面右上にある「+」をクリックする  ⇒ New repository を選択
    • 任意の Repository name を入力
      アップロードするフォルダまたはファイル名など
    • Create repository をクリック

2. コマンドラインを使ってローカルリポジトリを作成

  • ローカルリポジトリとは・・・
    自分のPC内にあるフォルダ・ファイルの保管場所
  • 作成方法
    • コマンドライン(ターミナル)を開く
    • cd フォルダのパスコマンドを実行し、アップロードするフォルダへ移動する
    • git initコマンドを実行して、ローカルリポジトリを作成する
      • 実行後、Initialized empty Git repository 〜 と表示されれば、作成完了。
    • git add . コマンドを入力して、対象フォルダ内のファイル・フォルダをステージングさせる(コマンド実行後は、特に何も表示されません)
      • 「.」 : カレントディレクトリ直下にある全てのフォルダ・ファイルを指定
      • ステージング : アップロード対象として指定(コミット)すること
    • git commit -m "コミット名" コマンドを実行し、ステージング対象を保存する
       コミット名: 何のコミットなのかを識別するための名前 ⇒ 書き方は自由
      • コマンド実行後は、コミットの内容が表示されます。
C:\baictCorn>git init
Initialized empty Git repository in C:/baictCorn/.git/

3. ローカル リポジトリと github(リモートリポジトリ) の関連付け・アップロード

  • git remote add origin URL名 コマンドを実行し、ローカル リポジトリと github(リモートリポジトリ)を関連付ける(リモートリポジトリを追加する)※ コマンド実行後は、特に何も表示されません。
    • origin: 追加するリモートリポジトリ名
    • URL名 : 追加するリポジトリ(ローカルリポジトリを作成したときの画面に表示される HTTPS の URL をコピペする)
  • git push -u origin main を実行し、ローカルリポジトリの main ブランチを リモートリポジトリの main へプッシュ(アップロード)します。
    • ※エラーが出るときは「main」を「master」に変更してみてください。
  • 以上でアップロード完了です。
  • 以下でブランチ名を確認することができます。
    • git branch
C:\baictCorn>git branch
* master

C:\baictCorn>git push -u origin master
Enumerating objects: 399, done.
Counting objects: 100% (399/399), done.
Delta compression using up to 8 threads
Compressing objects: 100% (360/360), done.
Writing objects: 100% (399/399), 13.32 MiB | 5.72 MiB/s, done.
Total 399 (delta 124), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (124/124), done.
To https://github.com/abstech2022/BaictCorn.git
 * [new branch]      master -> master
branch 'master' set up to track 'origin/master'.
Scrachでマリオ系のアクションゲームを作る②

前回は主人公を左右に移動させる方法を紹介しました。

ここでは主人公をジャンプさせる方法について記載します。

ジャンプ動作の実装

ではジャンプのコードを実装してみましょう。ジャンプのコードは下記になります。

ここでは「Y座標=-124」を地面とした場合のソースコードを記載しています。
これを前回の左右へ移動するコードと並列に記載することで、ジャンプしながら左右への移動も可能になります。

コスチュームの設定

次にジャンプ動作時のコスチュームを設定します。コスチュームを確認すると、12 ⇒ 13 ⇒ 14 ⇒ 12・・・と変化させると、髪をなびかせながら上昇していくモーションを実現できそうです。

同様に、下降時は15 ⇒ 16 ⇒ 17 ⇒ 15・・・と変化させることで、膝を曲げながら髪をなびかせて下降する動きになりそうです。

ここでは「状態」という変数を作成し、「状態=0」は着地状態、「状態=1」なら上昇中、「状態=2」なら下降中、という具合にしてみたいと思います。

状態の設定は、先ほど作成したジャンプ動作の部分に追記します。

これで動作に合わせて状態が変わるようになりました。

最後に状態の値に合わせてコスチュームを変化させる部分を実装します。

これでジャンプができるようになったと思います。

こちらがScrachのサンプルです。

これでプレーヤーの基本動作はできるようになったので、次回はステージのスクロール方法を紹介したいと思います。