admin のすべての投稿

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

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

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に変更

バーチャルYoutuberになりたい

ふとバーチャルYoutuberのアプリを作りたくなったのでリソースを探すけど,詳しい説明が無かったのでメモ

必用なもの

iPhoneX以降,Unity2018.2以降,XCODE

 

Unity Packageを以下からダウンロードしインストール

https://github.com/Unity-Technologies/facial-ar-remote/releases

新規Unityプロジェクトを立ち上げる

 

【ビルドの設定】

  1. UnityをiOSビルドに変更
  2. faical-ar-remote>Remote>Scene>Clientを起動
  3. File>Build Settings>Player Settingsを起動
  4. other settingsのBundle Identifierを設定
  5. Target minimum iOS version を11.3以上にする
  6. Camera Usage Description に AR Face Tracking と入力
  7. Requires ARKit にチェックを入れる
  8. Scripting Define Symbols に ARKIT_1_5 と入力

 

【まずiPhoneアプリを作成】

  1. final-ar-remote>Remote>Scene>Clientを開いているか確認
  2. ビルドし,XCODEでアプリ化しデバイスにインストール
  3. 作成されたアプリを起動

【サンプルシーンを開いて確認】

  1. iPhoneとMacが同じルータ内に接続されているか確認
  2. final-ar-remote>Examples>Scenes>SlothBlendShapesを開く
  3. SlothBlendShapesのHierarchyのStreamReaderのInspectorのNetworkStreamのPortをiphoneアプリにポートと同じにする
  4. 再生ボタンをクリック
  5. ConsoleにIPアドレスが出る(2つIPアドレスが出る時はWifiと有線LANが見えているのでどちらか切るといいかも)
  6. iPhoneのアプリにConsoleに表示されたIPアドレスを入力
  7. iPhoneのアプリでConnectを押す

 

facialが動きます.お疲れ様でした.

 

参考サイト

https://github.com/Unity-Technologies/facial-ar-remote

https://blogs.unity3d.com/jp/2018/08/13/facial-ar-remote-animating-with-ar/

https://qiita.com/Yuzu_Unity/items/91fc2b6f8ebe0fc0e839

https://qiita.com/syoyo/items/f0ad3eb4ed3387ee6462

 

 

 

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−変更箇所

Maya->Unity2019(4)

 

スクリプトの適用

chair.csは削除します.スクリプトを選択し,chairの歯車のアイコンからremove componentを選択して削除します.

 

次に,回転に対応したスクリプトを作成する.ファイル名はmove1.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(CharacterController))]
public class move1 : MonoBehaviour
{

	public float speed = 3.0F;
	public float rotateSpeed = 3.0F;
	public float gravity = 10f;
	public float jumpPower = 5;

	private Vector3 moveDirection;
	private CharacterController controller;

	void Start()
	{

		// コンポーネントの取得
		controller = GetComponent<CharacterController>();//キャラクターコントローラを取得し,変数contorllerに収納

	}

	void Update()
	{

		if (controller.isGrounded)//接地していれば
		{

			// 回転
			transform.Rotate(0, Input.GetAxis("Horizontal") * rotateSpeed, 0);

			// キャラクターのローカル空間での方向
			moveDirection = transform.transform.forward * speed * Input.GetAxis("Vertical");

			// ジャンプ
			if (Input.GetButtonDown("Jump")) moveDirection.y = jumpPower;

		}
		else
		{

			// ジャンプ落下
			moveDirection.y -= gravity * Time.deltaTime;

		}

		//移動させる
		controller.Move(moveDirection * Time.deltaTime);

	}

}

 

このスクリプトをイスのモデルにアサインします.

 

Maya->Unity2019(3)

Animation Controllerの設定

  1. Assets>Create>AnimationControllerAnimationControllerを作成する.名前は何でもかまわない
  2. 作成したAnimationControllerをダブルクリックする
  3. Animation Controller画面が開かれる
  4. アセット内のイスの中にTake001というアニメーションファイルが入っているので,Animation Controllerにドロップする(勝手にEntryと接続される)
  5. ChairのAnimator作成したAnimation Controllerを入れる
  6. その際,Apply Rootmotionにチェックを入れること
  7. 再生してみる

Maya->Unity2019(2)

スクリプトを作成する

 

  1. キャラクタを操作するスクリプトを作成します
  2. アセット内で右クリック>Create>C# Scriptを選択
  3. ファイル名は chair にする
  4. 作成されたスクリプトを開く(Visual Studioなどが開く)
  5. 全部を以下に入れ替え,保存する
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class chair : MonoBehaviour
{
    CharacterController characterController;

    public float speed = 2f;
    public float jumpSpeed = 3f;
    public float gravity = 9.8f;

    private Vector3 moveDirection = Vector3.zero;

    void Start()
    {
        characterController = GetComponent<CharacterController>();
    }

    void Update()
    {
        if (characterController.isGrounded)
        {
            moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical"));
            moveDirection *= speed;

            if (Input.GetKey(KeyCode.Space))
            {
                moveDirection.y = jumpSpeed;
            }

        }
        moveDirection.y -= gravity * Time.deltaTime;
        characterController.Move(moveDirection * Time.deltaTime);
    }
}
  1. 椅子を選び,Add ComponentからCharacter Controllerを探し出し追加する
  2. Character Controllerの設定項目でCollider(衝突用簡易オブジェクト)の大きさを調整し,床面にめり込まないようにする(緑色のカプセルの大きさを調整する)
  3. 先ほど作成したchairのスクリプトも椅子に追加する

つぎへ

Maya->Unity2019(1)

 

以下も参考に

FBX Exporterが見つからないとき−>ここ

2018バージョン(IKを使用している場合)−>ここ

 

Maya→FBXに出力

Mayaで作成したファイルをUnityに読み込むには,FBXへの出力を選択し、FBX形式のファイルで出力し,それをUnity側で読み込みます.

 

今回はFKで作成したアニメーションを書き出します.IKを使った場合は別の方法となりますので,注意してください

  1. 椅子の最上位の階層を選択します
  2. ファイル>選択項目の書き出しのオプション□を選択します
  3. 選択項目の書き出しオプションが表示されるので,ファイルタイプをFBX exportにし,選択項目の書き出しをクリック
  4. 現在のプリセットがAutodesk Media Entertainment になっていることを確認し,ファイル名をつけて保存する
  5. ファイル拡張子が.fbxになっていることを確認する
  6. 保存したファイルをUnityに読み込む
  7. 読み込んだファイルを選択し,InspectorのModelのタブを選択
  8. Scale Factorを100にし,Applyをクリック
  9. つづいてAnimationのタブを選択し,アニメーションが再生されるか確認する
  10. Loop Timeにチェックを入れ,Applyをクリックしておくこと
  11. Planeなどを作成し,その上に椅子を配置してみる
    椅子の木目が消えていますが,次のステップで読み込みます

 

Mayaのテクスチャを書き出す

  1. Mayaに戻り,椅子の座面オブジェクトと,ハイパーシェードの適用したマテリアル両方を選択する
  2. 編集>ファイルテクスチャに変換□を選択
  3. X,Y解像度を512に,ファイルフォーマットをPNGにし,保存して閉じる
  4. これによって作成されたテクスチャ画像は,MayaプロジェクトフォルダのSourceimageフォルダに入っているので,これをUnityに読みこむ
  5. アセット内で右クリック>Create>Materialで,マテリアルを作成
  6. Albedoの隣に読み込んだテクスチャをドロップする
  7. 作成したマテリアルを椅子の座面にアサインする
  8. 椅子の座面が木目になりました

つぎ