「メディア工学特別講義A」カテゴリーアーカイブ

得点に応じてパネルと切り替える

得点に応じてパネルと切り替えるスクリプトです

Badgeに応用できます

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //UI使用する

public class panelSelector : MonoBehaviour
{

    //ゲームオブジェクトを変数に入れる
    public GameObject panel1;
    public GameObject panel2;
    public GameObject panel3;

    //UI要素
    public Text scoreText;
    int myScore;


    //スタート時初期設定
    void Start()
    {
        //起動時にパネル1のみ表示させ,2,3は非表示(初期画面的なやつ)
        panel1.SetActive(true);
        panel2.SetActive(false);
        panel3.SetActive(false);

        myScore = 0;
        scoreText.text = myScore.ToString();
    }

    //とくになにもやってない
    void Update()
    {

    }

    //このオブジェクトに当たったときに実行
    private void OnTriggerEnter(Collider other)
    {

        if (other.gameObject.tag == "red")//タグがredなら10加算
        {
            myScore += 10;
            scoreText.text = myScore.ToString();
            Destroy(other.gameObject);
        }
        else if (other.gameObject.tag == "gold")//tagがgoldなら50加算
        {
            myScore += 50;
            scoreText.text = myScore.ToString();
            Destroy(other.gameObject);
        }
        scoreCheck(myScore);//関数scoreCheckを実行,引数にスコアを変数で渡す

    }

    //スコアをチェックしスコアに応じてパネルを表示,非表示する
    void scoreCheck(int myScoreSend)
        {
            if (myScoreSend > 99 && myScoreSend < 200)//100以上200未満
            {
                panel1.SetActive(false);
                panel2.SetActive(true);
                panel3.SetActive(false);
            }
            else if (myScoreSend > 199)//200以上
            {
                panel1.SetActive(false);
                panel2.SetActive(false);
                panel3.SetActive(true);
            }
        }
    }

実装例です

100点越でパネル(右上)が緑に,200点超えで赤になります

実行動画(コインが後ろに落ちて得点されています)

 

 

Android版をビルドする(2019版)

こちらを参考にhttps://docs.unity3d.com/jp/540/Manual/android-GettingStarted.html

ソフトウェアのバージョン確認とインストール

  • AndroidビルドにはAndroidSDKが必要
  • 2つのライブラリの場所をUnityのPreferenceで指定する
    • AndroidSDKダウンロード
    • AndroidStudioを起動する
    • 起動画面の Configure>SDK Managerを選択
    • Appearance & Behaviour> System Settings>Android SDKを選び,利用したいバージョンを選択し,Applyを押す(自動でSDKがダウンロードし展開される)※画像では5.0を選択している
    • 次に,上部に表示されたパスを覚える(Ctrl+Cキーでコピーする)

Unityでの作業

  1. Unity>Edit>Preferncesを選択.External ToolsのAndroid>SDKの欄に上記のパスを入力
  2. JDKダウンロード(Unityから JDK****/Contents/Home のパス指定)JDK8が無難(JDKの欄が空欄でなければここは飛ばしてもうまく行くようです)
  3. JDKの欄のBrowseを押し, コンピュータ>ローカルディスク(Cドライブ)>ProgramFiles(x86)>Java>Jdk1.8.0_151 のフォルダを選択しフォルダーの選択ボタンを押す
  4. JDKの項目はそのまま,NDKの項目も空にする
  5. Build Settings>PlatformAndroidを選択
  6. Switch Platform をクリック(数分から数時間かかる)
  7. Switchがうまくいかない場合,Hドライブを使用しているかドライブに空きが無い可能性があります.最低でも256MBの空きがあるドライブで制作してください
  8. PlayerSettingsをクリック
  9. Bundle Identifierを設定(com.companyname.productname)このcompanynameは自由に決めてください,productnameはアプリ名にしてみる
  10. Minimum API Levelを設定する.なお提出用アプリはこの設定をAndroid5.0で作成してください
    例)com.iml.coin
  11. Buildをクリック
  12. 保存先を訪ねられるので,半角英数字でアプリ名を入力し保存をクリック,保存先はUnityのプロジェクトフォルダ内が無難です
  13. ビルド完了を待つ(20〜30分かかる場合もある)
  14. ビルド開始後はかなり待たされても強制終了などはしない方がいい.プロジェクトごと壊れることもある
  15. ○○○.apkが作成される.これがアプリ本体
  16. Androidの場合は,直接アプリをAndroid内に保存できる
  17. USBケーブルなどで接続し実機にコピー,Android側でファイルを見るアプリなどでコピーしたアプリを探し,インストールする

エラー時

Androidのビルド設定で,最小と最大の値をどうするか,ELSの設定はどうするか,テクスチャの圧縮は何が良いか,などいろいろ組み合わせがありますのでいろいろ試してみてください.

作成したボタンが異常に小さい!CanvasにComponent>Layout>CanvasScalerを入れる

Switchがうまくいかない場合,Hドライブを使用しているかドライブに空きが無い可能性があります.最低でも256MBの空きがあるドライブで制作してください

Gradle prewarm failedが出た場合>Build SystemをGradleからInternalに変更

iOS版アプリをビルドする-2019加筆

ソフトウェアのバージョン確認とインストール,AppleIDの作成

  • 2019年12月現在,iOSビルドに必要なソフトウェア
  • XCODE11.2が必用
  • インストール要件
    • macOS 10.14.4 以降(アップルメニュー>このMacについて で確認可能.必要ならソフトウェアアップデート を実施)
    • ソフト容量8GB(インストールにはもっと必用)
    • AppleIDが必要(作成済みであればスキップ)

Unityでの作業

  1. File>Build Settings>PlatformiOSを選択
  2. Switch Platform をクリック(場合によっては数十分から数時間かかる)
  3. Game画面のAspect Ratioを調整する
  4. Canvasを選択し,CanvasのCanvas Scalerを調整する.
  5. ボタンの大きさも調整する
  6. File>Build SettingsPlayer Settingsをクリック
  7. Bundle Identifierを設定(com.yourcompanyname.productname)例−> com.(半角英数字で社名).(半角英数のアプリ名)
  8. Symlink unity librariesとDevelopment Buildのチェックを外す
  9. Buildをクリック
  10. ビルド完了を待つ(20〜30分かかる場合もある)※ビルドエラーが出た場合はエラーを解決してからビルドする
  11. ビルドエラーが出てもBuild Succeedと表示されることがあるので注意.Consoleを確認し赤の!項目が出ていないか確認

Mac,Xcode及びiPhoneでの作業

  1. iPhoneをMacに接続しiPhoneのロックを解除しておく
  2. ビルドで作成されたフォルダ内のUnity-iPhone.xcodeproj をダブルクリック(XCODEが起動する)
  3. (iPhone側)このコンピュータを信頼をタップ
  4. (iPhone側)パスコード入力
  5. 読み込みやiPhoneの情報を取得するなどに時間がかかる
  6. (Xcode)Unity-iPhoneのビルド先を自分のiPhoneにする
  7. (Xcode)Targets>Unity-iPhoneを選択し,Signing&Capabilitiesの項目でAutomatically Signingを選択
  8. (Xcode)Budle Identitfie>AppleIDを追加
  9. (Xcode)Apple IDの認証などがあります
  10. Signing Certificate でDevelopment選択
  11. 再生ボタンをクリックしビルドを実行(ビルド振興画面が表示される)
  12. 実機にインストール直前,パスワード入力が求められるが,今ログインしているMacのパスワードを入力する
  13. しばらく後に実機にインストールされる
  14.  (追記)-libiphoneが無いといったエラーが出る場合,ビルドしたディレクトリのLibraryフォルダ内に該当のライブラリがあるか確認(600MB前後のファイル)これは,Bulid SettingsのSymlink unity librariesのチェックを外していないとおきる
  15. Could not Lunch(アプリをスタートできない)といったエラーが出るが,これはiPhone側でこのユーザを承認していない為である(そこで,次↓の項目を実施する)
  16. (iPhone側)設定>一般>プロファイルとデバイス管理 で自分のAppleIDのデベロッパAPPを承認する
  17. 終了時,共用Macの場合必ずAppleIDを削除しておきましょう

 

取得してSE再生,壁に当たってSE再生

スクリプトのみ

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class destroy_SE : MonoBehaviour
{
    public AudioClip impact;//音のファイル読み込み
    public AudioClip wallhit;
 
    AudioSource audioSource;//音の再生装置
 
    private void Start()
    {
        audioSource = GetComponent<AudioSource>();
    }
 
    //当たって消すパタン
    private void OnTriggerEnter(Collider other)
    {
 
        if(other.gameObject.tag == "wall")//タグがwallなら
        {
            //audioSource.PlayOneShot(wallhit, 0.7F);//impactを音量0.7で再生
 
        }
        else
        {
            Destroy(other.gameObject);
            audioSource.PlayOneShot(impact, 0.7F);//impactを音量0.7で再生
        }
        
 
        //点数を加算
 
 
 
        //加算した点数をUIに反映
 
    }
    //壁
    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "wall")//タグがcollision なら
        {
            audioSource.PlayOneShot(wallhit, 0.7F);//wallhitを音量0.7で再生
 
        }
    }
 
}

 

はじめてのUnity2019−変更箇所

はじめてのUnityのチュートリアルサイト変更に伴い,取りこぼしている点について補足します.

変更後のサイト−>https://learn.unity.com/project/yu-zhuan-gashi?language=ja

 

この後の作業は以下の通りです

UIを作成>UI用のスクリプトを作成>ゲーム実行

続きを読む はじめてのUnity2019−変更箇所

ウェイトの確認

ウェイトの確認

  1. 各ジョイントの影響度をウェイトと呼びます
  2. ウェイトを確認してみる.円柱を選択し,スキン>スキンウェイトペイント□を選択,スキンウェイトペイントツールが開くのでjoint2を選択しjoint2の影響度を見る
  3. (参考情報)このウェイトはあくまでも計算式で作成されたもののため,思うように変形できない場合がある.図はjoint2の影響度をjoint3の近くまで広げた状態でjoint3を曲げたもの
  4. joint3を曲げてもjoint2の影響が強くjoint3の曲げが伝わらず破綻してしまっている.
  5. 人体などの複雑な形状ではウェイト調整が難しいので日頃から肉と骨についてはよく観察することや,解剖学を学ぶことをお勧めします.

スキニング(基本)

スキニングの基本

ジョイントについての確認事項

  1. アウトライナを開き,作成したジョイントがどこに対応しているか確認する

  2. このジョイントは根元側を回転することができ,そこから先が全て回転される.これは親子付けがされているからである.アウトライナで確認すること.確認が終わったら回転は元に戻しておく

 

スキニング(関連付け)

  1. 根元のジョイントを選択する.根元のジョイント(親)を選択すると子のジョイントも選択される
  2. Crtlキー(飛び越し複数選択)またはShiftキー(連続複数選択)を押しながら円柱を選択する.(2つ選択される)
  3. スキン>スキンのバインド□  を選択し,図の設定にし,スキンのバインドボタンを押す(表示されない場合メニューセットをリギングにする)
  4. (予備知識)バインドオプション画面を初期設定値に変更する方法
  5. 画面に特に変化は起こりませんが
  6. 選択を外すと,ジョイントに色が付いています
  7. joint3を回転させると図のようになる
  8. このように,ジョイントとオブジェクトとの関連付け骨と肉を関連付ける=することをスキニングと呼びます(ソフトウェアによって呼び方は異なる)
  9. また,根元側から先端へ向け回転の影響を伝えるためForward Kinematics(FK)と呼ぶ.(反意:IK)

ウェイトの確認へ

ジョイントの作成(基本)

テストピースで実験

テストピースで実験すると,本番データを壊す危険性を下げられます.新しいことをする前にはテストピースで試してみましょう.
少し煩わしいですが,手戻りを少なくし,結果的に締め切りに間に合わせるテクニックとして覚えておいてください.

 

ボーンの作成(基本)

  1. メニューセットリギングにする
  2. ジョイントのツールがすぐに出せるようにシェルフリギングを選択する
  3. 円柱を作成する.サイズ等は画像を参考に.(作成後,円柱を移動させない)
  4. ボーンを作成時にクリックした点がグリッドに重なるように,グリッドにスナップ機能をONにする.(スナップ機能は様々なソフトで実装されている)
  5. fron-zビューでシェーディング>X線表示 にチェックを入れる.これでオブジェクト内にジョイントが隠れている場合もジョイントを表示できる.
  6. ジョイント作成ツールを選択
  7. 円柱の下部から2グリッドずつクリックし,ジョイントを作成する.

  8. 円柱の先端をクリックしたらEnterキーを押し作成を確定する

次はジョイントと円柱とを関連付け(スキニング)を行います

次へ

アニメーションキーの削除

アニメーションしたキーの削除

1つのキーだけを削除する場合

  1. 再生バーを移動させ,右クリックし,削除を選択する
  2. キーフレームが削除される

全てのキーを削除する場合

  1. ツールセットがアニメーションになっているか確認する
  2. キー>削除の□を選択する
  3. 全てを削除したり,フレーム間を決めて削除などできる

キャラクタにモーションを追加する

コントロールオブジェクトを選択し、Sキーでキーフレームを設定し、アニメーションを作成する。

まずはアイドリングのアニメーションを作成する。およそ2〜3秒で1回のアニメーションとすること。

この他に「歩く」「走る」の基本モーションと、ゲームの内容に応じて、「驚く」「伏せる」「怒る」「襲う」などを作成すること。アニメーションについては、グラフエディタなどを使いループ時のつなぎ目が無いように設定すること。

増分保存することで、リセットできるようにしておくこと。

アニメーションが設定できたら、編集>キー>シミュレーションのベイク処理 を実施する。設定は以下画像を参考に。

その後、ファイル>すべて書き出し>□

プリセットを編集>アニメーションをベイク処理>アニメーションをベイク処理にチェック をして書き出す。

Unity上でアニメーションが再生されます。この後、プログラムを使い、状況に応じて再生するアニメーションを変えることで、自分が操作しているように見せることができます。