・GameCanvasの機能:今週使う変数、メソッド
<古いgameCanvasの情報です>
  ・int gc.CameraDeviceCount;
   ・カメラの数
  ・gc.StartCameraService(int camera_id)
   ・カメラの映像入力を有効にします。
  ・gc.StopCameraService()
   ・カメラの映像入力を無効にします。
  ・string gc.GetCameraDeviceName(int id)
   ・カメラの名前
  ・gc.DrawCameraImage(x,y);
   ・カメラ画像を座標xyに描画します。
  ・gc.DrawScaledRotateCameraImage(x,y,sizex,sizey,rot);
   ・カメラ画像を座標xyにsizex,sizeyの画像としてrod度回転して描画します。
<古い情報ここまで>
    ・gc.PlaySound(GcSound);
   ・BGM,SEを鳴らす命令です。
   ・引数はGcSound.XXXという形で指定します。
    (XXXはResフォルダ内のwavファイル名)
   ・音を追加したい場合は、下記の手順で追加します。
    ・wavファイルまたはmp3ファイルを用意
    ・Project窓でResフォルダを状態で、ファイルをドラッグ&ドロップ
    ・gc.PlaySound(GcSound,GcSoundTrack,bool loop);
   ・複数の音を同時に扱いたい時やループ再生させたい時に使います。
    (BGMを流しつつSEを鳴らしたい時など)
   ・2つ目の引数は以下の何れかを指定してください。
    GcSoundTrack.BGM1
    GcSoundTrack.BGM2
    GcSoundTrack.BGM3
    GcSoundTrack.Master
    GcSoundTrack.SE
   ・3つ目の引数はtrueにするとループ再生、falseにすると1回のみ再生します。
   ・引数1つのPlaySoundはGcSoundTrack.Masterで再生します。
    ・gc.StopSound(GcSoundTrack);
   ・鳴らした音を停める命令です。
   ・引数は以下の何れかを指定してください。
    GcSoundTrack.BGM1
    GcSoundTrack.BGM2
    GcSoundTrack.BGM3
    GcSoundTrack.Master
    GcSoundTrack.SE
    ・gc.Save(int key,int value);
    ・keyというidで数値valueを保存領域に保存します。
    ・int gc.TryLoad(id key); //旧gc用
    ・保存領域にkeyというidで保存された数値があれば、値を返します。
    ・gc.TryLoad(id key, out value);//新gc用
    ・保存領域にkeyというidで保存された数値があれば、値をvalueに入れます。
    前回、apkが作れなかった人、xcodeを用いてうまく実機で動かせなかったmax&iOSユーザーは、前回の課題の問題解決から始めましょう。 「課題の進め方」 ※今回は第9回なので、フォルダはk09に改名してください。 サンプルの起動を確認し、スクリプトが編集できる状態になったら、 続きを読み進めてください。
(クラスに入った直後)に変数の宣言を足す
    int camera_id=0; 
    int camera_num;
    string camera_name= ""; 
    GcCameraDevice? m_Camera;
(InitGame()の中)に初期化処理を足す
        gc.SetResolution(640,480);
        if (gc.HasUserAuthorizedPermissionCamera)
        {
            PlayCamera(0);
        }
        else
        {
            gc.RequestUserAuthorizedPermissionCameraAsync(success =>
            {
                if (success)
                {
                    PlayCamera(0);
                }
                else
                {
                    camera_name = "Error: no permission";
                }
            });
        }
(UpdateGame()の中)に下記の行を足す
if (gc.GetPointerFrameCount(0) ==1 ){
  camera_id++;
  if (camera_id >= gc.UpdateCameraDevice()) camera_id= 0; 
 PlayCamera(camera_id);
} 
DrawGame()の中に下記の行を記載
gc.ClearScreen();
gc.DrawCameraImage(m_Camera,0f,0f,0.25f,0.25f,0f,true);
gc.DrawString(camera_name,0,0);
クラスを閉じるかっこの手前にメソッドを追加
    void PlayCamera(int id)
    {
        if(id>= gc.UpdateCameraDevice()){
            id = 0;
        }
        if (gc.TryGetCameraImageAll(out var devices))
        {
            m_Camera = devices[id];
            camera_name = m_Camera.DeviceName;
        }
        else
        {
            camera_name = "Warn: no camera";
        }
    }
(クラスに入った直後)に変数の宣言を足す
	    int camera_id; 
	    string camera_name; 
(InitGame()の中)に初期化処理を足す
        gc.SetResolution(640, 480);
	camera_id = 0; 
	camera_name = gc.GetCameraDeviceName(camera_id); 
	gc.StartCameraService(camera_id); 
(UpdateGame()の中)に下記の行を足す
if (gc.GetPointerFrameCount(0) ==1 ){
  camera_id++;
  if (camera_id >= gc.CameraDeviceCount) camera_id= 0; 
  camera_name = gc.GetCameraDeviceName(camera_id); 
  gc.StartCameraService(camera_id); 
} 
DrawGame()の中に下記の行を記載
gc.ClearScreen();
gc.DrawScaledRotateCameraImage(100, 100, 25, 25, gc.CurrentCameraRotation); 
gc.DrawString(camera_name, 15, 15); 
DrawImageの代わりにDrawCameraImageを使いましょう。
(新しいgameCanvasの方はこちらを使用)
gc.DrawCameraImage(m_Camera,player_x,player_y,0.1f,0.1f,0f,true);
(古いgameCanvasの方はこちらは使用)
画像が大きすぎる場合はgc.DrawScaledCameraImageを使いましょう。
(0.1f倍にしてから調整してみましょう)
gc.DrawScaledRotateCameraImage(player_x,player_y,5,7,gc.CurrentCameraRotation);
バランスの変更は下記を参考にしてみましょう。
int player_speed = 3;
int active_box_num = 0;
active_box_num = 5 + count/600;
if(active_box_num > BOX_NUM){
  active_box_num = BOX_NUM;
}
//箱を動かすfor文の繰り返し回数を変えましょう
// BOX_NUM から active_box_numに変える
for(int i = 0;i < active_box_num; i++ ){
  //繰り返す内容(箱を動かす、プレイヤーとの接触判定)
}
//変数宣言に追加
int high_score = 0;
//initGame内に追加
gc.TryLoad("hs",out high_score);
//updateGameの中
//scoreが変った時に呼ぶ
if(score>high_score){
  high_score = score;
}
//ゲームオーバーになったタイミングで呼ぶ
gc.Save("hs",high_score);
//別途、音を鳴らしたいタイミングで以下を呼びましょう
gc.PlaySound(GcSound.Click1);
//音をループ再生させたい時、音を停めたい時は以下の命令を入れます
//例えば、ゲームオーバーになった時に鳴らす、
//ゲームオーバー画面でクリックすると停まる、など。
gc.PlaySound(GcSound.Click2,GcSoundTrack.BGM1,true);
gc.StopSound(GcSoundTrack.BGM1);
//drawの中
//ハイスコアも表示してあげましょう。(ゲーム中、終了時)
gc.DrawString("HIGH:"+high_score,0,60);
より良くする案を考えてみましょう。
プログラムが間違っていてビルドエラーが出ている可能性が高いです。
エディタ上でbuildしてみましょう。
{}の対応が間違っていないか、全角スペースが入っているかなど、確認してみましょう