アオイの備忘録ブログ

色んな事を書く備忘録用ブログです(※更新頻度は神のみぞ知る)

Rev.18 UnityでMicrosoft(XBox360)コントローラーを使う

UnityでMicrosoftXBox360)コントローラーを使ってみたのでメモ。
※Am○zo○見ると山の様に種類あるけど基本どの
MicrosoftXBox360)コントローラーでも同じ設定なのでは無いかと(根拠ナシ)
いちお使ったのは ↓ 
https://www.amazon.co.jp/gp/product/B085TFWX9F/ref=ppx_yo_dt_b_asin_title_o01_s02?ie=UTF8&psc=1

■ 環境

・Windows10
・Unity 2019.4.22f1
Visual Studio 2017

■ 内容

自分の使っているコントローラーは以下のアサインだった。
Windowsの場合はPCに繋げばすぐ使える

-----------------------------------------------------------------------------------------

 X axis = Left analog X
 Y axis = Left analog Y
 3rd axis = LT/RT
 4th axis = Right analog X
 5th axis = Right analog Y
 joystick button 0 = A
 joystick button 1 = B
 joystick button 2 = X
 joystick button 3 = Y
 joystick button 4 = L Trigger
 joystick button 5 = R Trigger
 joystick button 6 = Back
 joystick button 7 = Home
 joystick button 8 = Left analog press(L3)
 joystick button 9 = Right analog press(R3)
 6th axis = DPad X
 7th axis = DPad Y

-----------------------------------------------------------------------------------------

 ■ 確認スクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;

public
 class InputScript : MonoBehaviour
{
    private float inputAxisLX = 0.0f;
    private float inputAxisLY = 0.0f;
    private float inputAxisRX = 0.0f;
    private float inputAxisRY = 0.0f;
    private float inputAxisDPadX = 0.0f;
    private float inputAxisDPadY = 0.0f;
    private float inputTriggerAxis = 0.0f;
    private float inputMouseX = 0.0f;
    private float inputMouseY = 0.0f;
    private bool inputTriggerL = false;
    private bool inputTriggerR = false;
    private bool inputPadL3 = false;
    private bool inputPadR3 = false;
    private bool inputButtonA = false;
    private bool inputButtonB = false;
    private bool inputButtonX = false;
    private bool inputButtonY = false;

    // Start is called before the first frame update
    
void Start()
    {
    }
    
    // Update is called once per frame
    
void Update()
    {
        inputAxisLX = Input.GetAxis("XBoxPad_LX");
        inputAxisLY = Input.GetAxis("XBoxPad_LY");
        inputAxisRX = Input.GetAxis("XBoxPad_RX");
        inputAxisRY = Input.GetAxis("XBoxPad_RY");
        inputAxisDPadX = Input.GetAxis("XBoxDPad_X");
        inputAxisDPadY = Input.GetAxis("XBoxDPad_Y");
        // Update 自分の使ったコントローラーの仕様かXBox全体の共通仕様なのか分からないが
        // LT、RT各値を取得する際はDSで言うL2、R2と別れていない為、
        
// 一つの設定名で取得し、R = 0.0~1.0 / L = 0.0~-1.0 で取得できる
        inputTriggerAxis = Input.GetAxis("XBoxPad_LTRT");
        inputTriggerL = Input.GetButton("XBoxPad_L");
        inputTriggerR = Input.GetButton("XBoxPad_R");

        inputPadL3 = Input.GetButton("XBoxPad_L3"); // L3
        
inputPadR3 = Input.GetButton("XBoxPad_R3"); // R3

        
// Input.GetKey("joystick button 0");でも取得可(※InputManager設定不要)
        
inputButtonA = Input.GetButtonDown("XBoxPad_A");
        // Input.GetKey("joystick button 1");でも取得可(※InputManager設定不要)
        
inputButtonB = Input.GetButtonDown("XBoxPad_B");
        // Input.GetKey("joystick button 2");でも取得可(※InputManager設定不要)
        
inputButtonX = Input.GetButtonDown("XBoxPad_X");
        // Input.GetKey("joystick button 3");でも取得可(※InputManager設定不要)
        
inputButtonY = Input.GetButtonDown("XBoxPad_Y");
    }

    void OnGUI()
    {
        GUI.Box( 省略"Pad Input Interaction.");
        GUI.Label(省略"Pad Input AxisLX  =  " + inputAxisLX.ToString("f2"));
        GUI.Label(省略"Pad Input AxisLY  =  " + inputAxisLY.ToString("f2"));
        GUI.Label(省略"Pad Input AxisRX  =  " + inputAxisRX.ToString("f2"));
        GUI.Label(省略"Pad Input AxisRY  =  " + inputAxisRY.ToString("f2"));
        GUI.Label(省略"Pad Input DPad AxisX  =  " + inputAxisDPadX.ToString("f2"));
        GUI.Label(省略"Pad Input DPad AxisY  =  " + inputAxisDPadY.ToString("f2"));
        GUI.Label(省略"Pad Input Trigger LT/RT  =  " + inputTriggerAxis.ToString("f2"));
        GUI.Label(省略"Pad Input Trigger L  =  " + inputTriggerL);
        GUI.Label(省略"Pad Input Trigger R  =  " + inputTriggerR);
        GUI.Label(省略"Pad Input Trigger PadL3  =  " + inputPadL3);
        GUI.Label(省略"Pad Input Trigger PadR3  =  " + inputPadR3);
        GUI.Label(省略"Pad Input A Button  =  " + inputButtonA);
        GUI.Label(省略"Pad Input B Button  =  " + inputButtonB);
        GUI.Label(省略"Pad Input X Button  =  " + inputButtonX);
        GUI.Label(省略"Pad Input Y Button  =  " + inputButtonY);
  }

これで各スティック、ボタンの操作確認もゲーム画面上で出来る。
【重要】
ソースコードにも書いてあるがLT、RTを取得する際にそれぞれアサイン名は無いので
1つのアサイン名で取得する

■ その他

はてなブログでのソースコードの書き方が分からない、、、、

 

 

Rev.17 VisualStudioでデバッグ実行時に「クラスライブラリの出力タイプを持つプロジェクトを直接起動することはできません」問題

初めて見るエラーだったのでこれも地味に焦ったけど
調べて見ると多くの解決記事、対応記事が出てきてアウトプットしてくれてる
人に心から感謝感謝。
そして自分でも対処したので備忘録。

 

■ 環境

Windows10
Unity 2019.4.22f
Visual Studio 2017

UnityとVSのバージョンを記載してるけどバージョン関係無く出る問題だと思われる

 

■ 現象

UnityスクリプトをVisualStudioで開いてデバッグ起動しようとすると
以下のエラーが出る。

f:id:Bianco:20210627215149p:plain

デバッグ起動(F5)しようとしたプロジェクトの種類が
クラスライブラリ(=ビルドするとdllファイルができる)なのが原因で
クラスライブラリは外部の他のプロセスから利用するためのもので、動作させるためには呼び出し元となるプロジェクトが別途必要になる。

f:id:Bianco:20210627220546p:plain

「Unityにアタッチ」の部分がエラーが出る時は「開始」とかになってる。

 

■ 解決

実行可能なプロジェクト名(それまでビルドできていたプロジェクトがあればその
プロジェクト名)を右クリックして、
スタートアッププロジェクトに設定」をクリック

f:id:Bianco:20210627222358p:plain

でVisualStudio再起動。で、「Unityのアタッチ」にならないならUnity毎再起動。

※上記方法で解決するはずだが解決しない場合※

Visual Studio Installerで「Unityによるゲーム開発」をインストールしていないなら
インストールしてUnity毎再起動。

f:id:Bianco:20210627224036p:plain

 

 

自分は「Unityによるゲーム開発」がインストールされていなかったので
インストールしてUnityを再起動したら解決した。

 

<参考>

Unity のエラーを理解してトラブルシュートに役立てよう - YouTube

VisualStudioでビルド時に「クラスライブラリの出力タイプを持つプロジェクトを直接起動することはできません」と怒られたら… - Qiita

 

 

 

Rev.16 UnityでスクリプトをVisualStudioで開こうとしたら意味分からんエラーが出た時の対処法備忘録

タイトル位の通り、UnityでスクリプトをVisualStudioで開こうとしたら
意味分からんエラーが出た時の対処法備忘録。

 

■ 使用環境

Windows10

Unity 2019.4.22f

VisualStudio2017

 

■ 現象

Unityで適当に新規プロジェクトを作成し、更に適当にスクリプトファイルを
作成しそれをVisualStudioで開こうとすると以下のエラーが出る。

f:id:Bianco:20210613221319j:plain

初めて出るエラーでもう一つにPC環境では一度も出た事無かったので
取り敢えず順に見てみた。

「方法1」
ターゲットを.NET Framework 4.6.1に変更する。~
「結果」
プロジェクトファイルは読み込めず

 

 「方法2」
".NET Framework, Version=v4.7.1"のターゲットパックをダウンロードする(D)。~
「結果」
解決した。インストール手段は自分が知る範囲では2つある
1つ目は以下リンクからv4.7.1のターゲットパック(リンク先だとDeveloper Pack)

dotnet.microsoft.com

対象のVerのをダウンロードした後、普通にインストールすればOK

 

2つ目はVisualStudio Installerからインストールする

f:id:Bianco:20210613222829p:plain

f:id:Bianco:20210613222936p:plain

 
これでダイアログは出なくなった。地味に苦戦した、疲れた。

■ 参考

tsubakit1.hateblo.jp

 

 

 

 

Rev.15 Blender2.90.0 インストール(Windows)

ちょっと記事が前後してしまったけれどもBlenderの2.90.0をインストールしたので
忘れない様にメモ。
※と言っても大部分は2.8x~と変わらないですけど。

 

■ 方法

[1]. 基本はそのままインストールを進める

f:id:Bianco:20201101182514p:plain

f:id:Bianco:20201101182525p:plain

f:id:Bianco:20201101182537p:plain

f:id:Bianco:20201101182545p:plain

f:id:Bianco:20201101182556p:plain

f:id:Bianco:20201101182604p:plain


[2]. インストール後は各種設定をして終わり

f:id:Bianco:20201101184634p:plain

f:id:Bianco:20201101184642p:plain

f:id:Bianco:20201101184655p:plain

Language:言語(インストール時に言語設定出来る様になったみたい)

Shortcuts:ショートカットの設定

Select With:マウスの選択ボタン設定

Spacebar:スペースキーの割り当て設定

Theme:ナイトモードとかの見た目設定

詳細は2.8Xインストールの記事に

Rev.11 Blender2.82 インストール(Windows) - アオイの備忘録ブログ

 

■ その他

機能面の変更チェックはこれから

 

 

 

 

Rev.14 BlenderにMMDのPMD・PMX・VMDファイルを読み込み、出力する方法(Ver, 2.9)

BlenderMikuMikuDanceのPMX形式ファイルを読み込みたいと思い
その方法について備忘録メモ。

 

色々書く前にBlenderでPMXを読み込む為のアドオンについて

【超大事】

<旧作GitHubリンク>

https://github.com/sugiany/blender_mmd_tools

<最新Ver GitHubリンク>

https://github.com/powroupi/blender_mmd_tools

最新VerのReadmeWiki
https://github.com/powroupi/blender_mmd_tools/wiki/Documentation.ja

Blenderでは標準で.pmxなどを読み込むことができないので、有志が開発した
アドオンを導入する必要があるのだけれど<旧作>はもう開発が止まっていて
2.8x、2.8x~の場合は<最新Ver>を使用しないと適用されないのでめちゃくちゃ注意。
調べた時に出てくるブログなどの情報はまだ旧バージョン版が上位結果で多く出てきて
とても間違える。

 

■ 情報

Blender2.9
・使用したアドオンバージョンはdev_test

■ 方法

[1]. アドオンをBlenderのアドオンリストに追加

f:id:Bianco:20201025201336p:plain
dev_testを解凍して「mmd_tools」を
Blenderのインストールフォルダのアドオンリストに追加する

f:id:Bianco:20201025202952p:plain
※自分の場合は(殆どの人が同じだと思う)
「C:\Program Files\Blender Foundation\Blender 2.90\2.90\scripts\addons」

[2].  Blenderで追加したアドオンを有効にする

Blenderを開いて「編集」ー「Preferences」を選んで検索に[mmd_tools]と
入力すると一覧に表示されるのでチェックを入れて有効にする。

f:id:Bianco:20201028140536p:plain

詳細を開くと各種情報が出る。

f:id:Bianco:20201028140615p:plain

「Shared Toon Texture」の設定項目に、MikuMikuDanceのDataディレクトリへの
ファイルパスを設定。
※これを設定しないとMMDモデルをインポートした際に設定されている
マテリアルノードで使われているトゥーン関係のテクスチャが読み込まれず、
正しく表示されない。

 

[3]. モデルをインポートしてみる

ここまでの設定を行うと「ファイル」ー「インポート」メニューに
MMDファイル項目が追加されている。

f:id:Bianco:20201028142153p:plain

今回は原神のMMD形式のモデルデータが中国語サイトで無料配布されているので
琴ちゃんで試してみた。

原神 模型下载 - 注目のゲーム「原神」に登場するキャラクターの3Dモデル14体が無料配布中!MMD(PMX)形式

「ファイル」ー「インポート」から.pmxモデルを選んで細かい設定はいじらず
デフォルト設定でインポート。

f:id:Bianco:20201028145109p:plain

f:id:Bianco:20201028152628p:plain

こう表示される。
ここからのテクスチャ(マテリアル?)の貼り方とかはまだやり方が
分からないのでここまで。

※誰か教えて下さい・・・・(小声)


 ■ 補足

次はUnityでモデルを表示するのを試してみる予定(いつやるかは未定)

 

 

 

 

Rev.13 SpriteStudio 6のインストール

SpriteStudio 6が個人でも使えるので使おうと思ってとりあえず
インストールしてみたので備忘録メモ。

SpriteStudio 6についての詳細はココ

OPTPiX SpriteStudio ダウンロード | OPTPiX Help Center

※インストールする前にライセンス契約が必須

※Starterライセンスは一定条件で無料(年度の売上高が5000万円未満の個人もしくは法人とかなので大体当てはまる(笑))

■ 情報

インストールバージョンは6_5_1

■ 手順

f:id:Bianco:20201003224526p:plain

f:id:Bianco:20201003224550p:plain
【補足】
インストールフォルダに関して、デフォルトは大体Cドライブだけど

こういう些細なレベルでもCドライブの容量は節約したかったのでDドライブに
インストール。
でもCドライブ以外にインストールして大丈夫か不安になったので
ウェブテクノロジのユーザーサポートに問い合わせしてみたら大丈夫と返答を貰った
のでDドライブにいざインストール。

 

f:id:Bianco:20201003225145p:plain

f:id:Bianco:20201003225333p:plain

f:id:Bianco:20201003225409p:plain

これでインストール完了。

 

■ 使用設定

f:id:Bianco:20201003225445p:plain


起動するとライセンスの登録画面が出るので登録。
名前欄は調子乗って英字で登録してみた(笑)

 

f:id:Bianco:20201003225617p:plain

ネット認証するのでそのままOKをクリック

f:id:Bianco:20201003225630p:plain

この後ライセンスの有効期限が表示された画面が出たらネット認証完了。


■ 補足

とりあえず超ショボくても良いからアニメ作ってUE4C++で表示する
ところまではいきたい・・・・・(笑)

 

・参考

OPTPiX SpriteStudio ヘルプセンター | OPTPiX Help Center

 

 

 

Rev.12 UE4のVaultCacheの容量搾取をLauncherごとシンボリックリンクを使った回避

UE4は何の気無しにAssetデータダウンロードしたりしてると恐ろしい勢いで
Cドライブの容量を食い尽くしユーザーを苦悩させる悪魔になるのでそれを
回避する小ネタ。

 

シンボリックリンクについては以下 

https://wa3.i-3-i.info/word1151.html

 

■ 内容

EpicGamesのマーケットプレイスでアセットを購入し、プロジェクトに追加で
DドライブにあるUE4プロジェクトにアセットを追加するのですが、
何故かCドライブがどんどん圧迫されていく状態になるかと思います。
その原因がVaultCacheです。
マーケットプレイスのアセットはVaultCacheにダウンロードされ、そこから各プロジェクトにコピーされていきます。
無料アセットとかを買いまくると気付いた時には既に遅しでCドライブの容量が見るも無残な状態になっています。

デフォルトだと以下にインストールされます(自分の環境)

C:\Program Files (x86)\Epic Games\Launcher\VaultCache

 

■ 手順

1,
CドライブにあるLauncherフォルダごと任意のディレクトリに移動します

2,
元のディレクトリに対して、移動先のディレクトリからのシンボリックリンクを作成するため、コマンドプロンプトを管理者権限で起動し、以下のコマンドを入力。

mklink /D "C:\Program Files\Epic Games\Launcher" "D:\Program Files\Epic Games\Launcher"

3,
Launcherを起動して確認

 

■ 補足

VaultCacheのみを別場所にさせたい場合はEpic Games Launcherを起動して
[設定]->[ダウンロードキャッシュ用フォルダを編集]を選択して
希望のディレクトリを設定

f:id:Bianco:20200922191237p:plain

 

■ 補足

手順は簡単だけどしっかり確認はした方が良い