- 投稿日:2019-05-21T23:38:45+09:00
Unity2Dで左右を反転するときにrotation Yを180にするのは良くない
こんにちは、ブログ「学生ブロックチェーンエンジニアのブログ」を運営しているアカネヤ(@ToshioAkaneya)です。
Unity2Dで左右を反転するときにrotation Yを180にするのは良くない
scale X を-1に設定するのが良いです。
rotation Yを180に設定することは、Y軸の周りに180度回転させることを意味します。
これは2D画面においてはそのコンポーネントの裏側を表示することになります。
この状態だとボタンが動作しないなどの不具合が発生します。
scale X を-1に設定するようにしましょう。はてなブックマーク・Pocketはこちらから
- 投稿日:2019-05-21T22:49:45+09:00
Linux版のUnityでビルド対象にMacOSを選べないことへの対処
Linux版のUnityは次のリンク等からUnityHubのインストーラをダウンロードしてUnityHubでインストールすると思うのですが、MacOS向けにビルドするようにする場合は2019年5月時点ではちょっと手順を踏む必要があったのでメモ。一回作業したら後はやらなくてよくなるので対処は楽です。
" Unity Hub v2.0.0 Release
https://forum.unity.com/threads/unity-hub-v2-0-0-release.677485/対処法
対処法は次のリンクに書かれています。
" Can't build Mac OS X target on Linux (Ubuntu 18.04)
https://forum.unity.com/threads/cant-build-mac-os-x-target-on-linux-ubuntu-18-04.586255/具体的には次の手順を踏むと対処できます。
- Installs→Addから目的のバージョンのUnityを選択し、追加モジュールに
Mac Build Support (Mono)
も選択するようにしてインストール1- インストールしたUnityのインストールディレクトリ(
~/Unity/Hub/Editor/<バージョン>
)に移動Editor/Data/PlaybackEngines
の中にMacStandaloneSupport
というディレクトリを作成- 次のファイルを
Editor/Data/PlaybackEngines/MacStandaloneSupport
に移動
- ivy.xml
- modules.asset
- optool
- UnityEditor.OSXStandalone.Extensions.dll
- UnityEditor.OSXStandalone.Extensions.dll.mdb
- Variations
- Whitelists
これで完了です。2〜4の手順はコマンドで示すと次のようになります。
cd ~/Unity/Hub/Editor/<バージョン> mkdir Editor/Data/PlaybackEngines/MacStandaloneSupport mv ivy.xml modules.asset optool UnityEditor.OSXStandalone.Extensions.dll UnityEditor.OSXStandalone.Extensions.dll.mdb Variations Whitelists Editor/Data/PlaybackEngines/MacStandaloneSupport原因…?
~/Unity/Hub/Editor/<バージョン>
にあるmodules.json
を見てみると分かるのですが、Mac Build Support (Mono)
のインストール先が{UNITY_PATH}/Editor/Data/PlaybackEngines/MacStandaloneSupport
ではなく{UNITY_PATH}
になっており、それが原因で正しい場所にMacOS用のモジュールがインストールされていないのが原因です。ただ、インストールする前にmodules.json
を書き換えればいいという訳でも無いため具体的な修正方法は分かりません。多分その内治ると思います。それまではこういう手順でインストールしたものを移動させると大丈夫です。
Unityを既にインストールしているなら大丈夫だとは思いますが念のため、Unityをインストールするには右上の自分のアイコン→Manage License→ACTIVATE NEW LICENSEからライセンスを有効化する必要があります。 ↩
- 投稿日:2019-05-21T21:45:31+09:00
Mirage Solo+Unity+GVR SDKでパススルーモードのデモをビルドする
Mirage Soloのパススルーモードを見てみたい
Mirage Soloにパススルーモード?シースルーモード?ってやつがあるらしい。
(どっちが正式名称なのかよくわからないが、本記事ではパススルーとする。)
パススルーモードっていうのは、HMDを被っているのに現実も見えるすごいやつ!
とりあえず、凄そうなので、見てみたい。
GVR SDK for Unityに、パススルーモードのデモがあるらしいので、すぐに見られるだろう。
この考えは甘かった。初心者には、ひっかかりポイントが多かった。
ここに備忘録を残す。インストール編
インストールするものと、ダウンロード先の一覧
インストールしたバージョンや、ちょっとした注意点は手順に書いてます。
そんなのわかるぜ!な人はダウンロード先へいって、じゃんじゃんやっちゃってください。
- Unity
- Android Studio(Android SDK)
- Android NDK
- JDK
- Google VR SDK
インストール手順
※当記事でインストールする諸々のバージョンは、2019年5月のバージョンです。
ビルド環境は、Windows10 64bitです。
各自で、適したものをインストールしてくださいね!Unity
Unityのバージョンは、Unity 2018.3.14で実行しました。
現時点ではUnity2019が最新版ですが、不安定だとかなんとか言われているらしいので。▼過去バージョンのUnityのダウンロードはコチラ
https://unity3d.com/jp/get-unity/download/archiveリンク先にいったら、自分の環境に適したものをダウンロード。
執筆者の環境はWindows10ですので、WinのUnityインストーラーをダウンロード。
ダウンロードしたら、インストーラーを実行。
インストールするコンポーネントで、Mirage Soloのビルドに必要なのは黄色の色つけたやつ。
たぶん。
※Android Supportは必須です!
Mirage SoloはAndroidで動いているので、これがないとビルドできません!他はなくてOK。
Android Studio(Android SDK)
Mirage SoloはAndroidで動いているらしいので、Android Studioをインストールする。
バージョンは、執筆時点で最新のAndroid Studio 3.4 for Windows 64-bit。▼Android Studioのダウンロードはコチラ
https://developer.android.com/studio/index.html?hl=ja#downloadsリンク先で、Downloadボタンを押してダウンロードして、インストーラーを実行。
Android NDK
Android NDKは、リビジョン 16bをインストールしました。
最新版のリビジョン 19bをインストールしたら、Unityに16bにしろって怒られた。▼過去バージョンのAndroid NDKはコチラ
https://developer.android.com/ndk/downloads/revision_history.html?hl=jaJDK
JDKは、最新版のJDK 12をインストール。
▼JDKはコチラ
https://www.oracle.com/technetwork/java/javase/downloads/index.htmlAccept License Agreementにチェック。
Windowsのインストーラーをダウンロード。
Google VR SDK
執筆時点で最新版のGVR SDK for Unity v1.200.0をインストール。
このUnity Packkageに、パスルルーモードのデモが入ってます!▼GVR SDKのダウンロード先
https://github.com/googlevr/gvr-unity-sdk/releasesリンク先にいったら「.unitypackkage」をクリックしてダウンロード。
ここで私は間違ってzipをダウンロードして、Unityにインポートしたら詰まった!
「.unitypackkage」をダウンロードだ!後でUnityにインポートするので、わかりやすい場所に保存。
ビルド編
ビルド編でやること一覧
- Unityで新規プロジェクト作成
- GoogleVRForUnity_1.200.0.unitypackageをUnityにインポート
- デモシーン「HelloMR」を開く
- JDKとNDKのビルドパスを設定
- Build Settingを設定
- ビルドする!パススルーでモノクロの景色が見える!
1.Unityで新規プロジェクトを作成
適当にUnityの新規プロジェクトを作ります。
執筆時のバージョンはUnity2018.3.14f1
2.GoogleVRForUnity_1.200.0.unitypackageをUnityにインポート
ダウンロードしておいたUnityパッケージをインポートする。
インポートする範囲はよくわからんので、とりあえずALL
で。
3. デモシーン「HelloMR」を開く
先ほどインポートしたUnityパッケージ内の「HelloMR」シーンを開きます。
「HelloMR」シーンのパスは、Assets>GoogleVR>Beta>Demos>Scenes>HelloMRです。
このシーンで、パススルーモードを見ることができます!
4. JDKとNDKのビルドパスを設定
ダウンロードしといたAndroid JDKとNDKのビルドパスを設定。
設定画面の開き方は、Edit
>Preferences
で開けます。
5. Build SettingをAndroidに設定
File
>Build Settings
から、ビルド設定をします。
Add Open Scenes
で「HelloMR」シーンをビルドするシーンに追加。
Platformは、Android
を選択。
Switch Platform
を押します。
ビルド設定がAndroidに切り替わったら、更にPlayer Settingsをします。
Build Settingsの画面左下、Player Settings
を押します。
Inspector欄に、Player Settingsが開きます。
Company NameとProduct Nameを適当に変更しましょう。
この2つをデフォルトのままにしておくとMirageSoloで実行できないので気をつけましょう。
更に、Other Settingを開きます。
IdentificationのPackage Nameを、先ほど設定したCompany NameとProduct Nameに変更。
Minimum API Levelは、API level 24
を選択。
ConfigurationのScripting Backendは、IL2CPP
を選択。
最後に、XR Settingsを設定する。
Virtual Reality Supportedにチェックする。
下の+マークを押して、DayDream
を選択。
Unity側の設定はこれでおしまい。
このあたりの設定は、Google VR SDKの公式情報を参考にしました。
英語とか何もわからないけれど、英語でしか書いてなくて、つらかった。▼Quickstart for Google VR SDK for Unity with Android
https://developers.google.com/vr/develop/unity/get-started-android6. ビルドする!パススルーでモノクロの景色が見える!
Mirage Solo側の操作を操作します。開発者モードにしましょう。
設定
>すべての設定
>システム
>端末情報
のビルド番号
を、7回連打。
開発者モードがオンになります。
デバッグ
>USBデバッグ
をオンにします。あとは、Mirage SoloをUSBでPCに接続!
Unityで、Build & Run
!
Build & Run
をすると、Mirage Solo内に「このPCとの接続を常に許可」と出るのでチェックする。うおおお!モノクロの世界が見える!見えたぞ~~!
参考
・UnityによるMirage Solo開発
https://qiita.com/monchi/items/8d9a6d1dd8f4b8606a61・Unity+Mirage Solo 開発メモ
https://framesynthesis.jp/tech/unity/daydream/・Quickstart for Google VR SDK for Unity with Android
https://developers.google.com/vr/develop/unity/get-started-android・IL2CPP
https://docs.unity3d.com/ja/2017.4/Manual/IL2CPP.html※なんとなくこれでうまくいっていっただけなので、いらない設定とかもあるかも。
- 投稿日:2019-05-21T18:49:25+09:00
MacのUnityでどうしても名前に濁点を含むファイルをインポートしたい
NFCとNFD
Macでたまに
だくてん
がた゛くてん
(濁点だけで1文字)になる現象に出くわします。
だくてん
がNFC、た゛くてん
がNFDというエンコード方式のようです。
Macファイルシステムが原因なのかアプリケーションコードがNFDを正しく扱えないのかわかりませんが、とにかく、Unityもファイル名に濁点を含むファイルをインポートする際に、この問題に当たります。今回は以下のような制約があり、全角ファイル名を排除しない方向で頑張りたいです。
- 諸々の都合があって、ファイル名に全角の濁点を含むファイルをUnityにインポートしたい (ファイル名を変えたくない)
- 諸々の都合があって、アプリケーションからのファイル名の指定はNFCで行いたい
AssetPostProcessorでなんとかする
Unityで全角を削った上でターミナルでリネームすることで回避できますが、今回はAssetPostprocessorでインポートされたアセットをNFCに直すようにします。
using UnityEditor; using System.Text; namespace Editor { /// <summary> /// アセットインポート後にアセットファイル名の正規化を行う /// </summary> public class AssetPostProcessor_NFC : AssetPostprocessor { private static void OnPostprocessAllAssets( string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { var processed = false; // To Normalization Form C foreach (var asset in importedAssets) { if (asset.IsNormalized(NormalizationForm.FormC)) { continue; } var nfcName = asset.Normalize(NormalizationForm.FormC); AssetDatabase.MoveAsset(asset, nfcName); processed = true; } if (processed) { AssetDatabase.Refresh(); } } } }もう一度インポートすると、下のような感じになります。
GUIDがコンフリクトするっていう警告が出ますが、気にしないことにします。
あと、なんでかよくわかりませんがAssetDatabase.RenameAssetではうまく動きませんでした。
- 投稿日:2019-05-21T18:05:13+09:00
FtDのLuaにおけるVector3の基礎
はじめに
- この記事は「From The Depths」というゲーム(以下FtD)で使用できるLuaに関する記事です。
- Luaに関心のあるFtDプレイヤーを対象としています。
ベクトルと座標
ベクトルは高校物理でやるかと思いますが、3次元空間での方向を表すのにx,y,zの3つの数字で方向を示します。
また、x,y,zで位置(=座標)を示すこともできます。
座標には、グローバル座標(ワールド座標とも)とローカル座標があります。ローカル座標
ローカル座標はビークルの最初のブロックを基準として表されます。
右がx、上がy、前がzです。
上図にて青い棒の先のスピブロは、x=7, y=5, z=6の座標にあることになります。
LuaBoxで表示させると、以下のようになります。
function Update(I) I:ClearLogs() local id = 1 -- スピブロのID local info = I:GetSubConstructInfo(id) -- スピブロのブロック情報を取得 I:LogToHud(info.Position:ToString()) -- ローカル座標をログ出力 endグローバル座標
グローバル座標は世界の中のある点を基準としてどこにあるかを示します。
基準点は、現状では初期拠点のあるマスの中心の海抜0m地点です。
FtDのグローバル座標は、東がx、上がy、北がzとなっています。ローカル座標の例と同様に、スピブロの位置をLuaBoxで表示させると、以下のようになります。
マップで見ると、1マスの1片は5000mなので、マスのど真ん中から東に692m、南に511mくらいですね。
コードは以下。
function Update(I) I:ClearLogs() local id = 1 -- スピブロのID local info = I:GetSubConstructInfo(id) -- スピブロのブロック情報を取得 I:Log(info.Position:ToString()) -- グローバル座標をログ出力 endVector3について
FtDのLuaでは、UnityのVector3を使用できます。3は多分3次元の3。
Vector3はベクトルや座標を扱いやすいように作られており、x,y,zなどの必要な数値と、これらを操作する関数が用意されています。
リファレンスはこちら。例えば、とある座標(x=1, y=2, z=0)から別の座標(x=3, y=5, z=10)へ向かうベクトルを算出するには、
local vector1 = I:Maths_CreateVector3(1, 2, 0) local vector2 = I:Maths_CreateVector3(3, 5, 10) local vector3 = vector2 - vector1 -- vector2が先と書きます。すると、内部で3 - 1と5 - 2と10 - 0が計算され、vector3には(x=2, y=3, z=10)が格納されます。
以下は実行結果。
自機から敵の方向をローカル座標で知るにはこれを使います。なお、Vector3は
I:Maths_CreateVector3(x,y,z)
だけでなくVector3(x,y,z)
でも作れます。
とりあえず以上。
- 投稿日:2019-05-21T17:29:56+09:00
Unityでオンラインゲームを作るためのライブラリ、UniP2Pの紹介
UniP2Pとは
UniP2PはUnityにおけるリアルタイムネットワーク通信をもっとラクに実現し、民主化しようという試みから始まったプロジェクトです。マッチング以外の処理をP2P(サーバーを使わない端末間の通信)で行うことで、低遅延かつ、サーバーに負担がかからない仕組みになっています。
MITライセンスで公開しておりマッチングサーバーに対しての同時接続数にライセンス的な制限もありません。
現在確認している対応プラットフォームは、Windows Mac Linux Androidとなっており、クロスプラットフォームでの通信が可能になっています。将来的にはWebGLでも使えるようにWebRTCでの実装もする予定です。
小規模オンラインゲーム開発の民主化を行うことを目標に掲げています。機能一覧
- オブジェクトの同期
- NetworkInstantiate
- NetworkDestroy
- RPC -Remote Procedure Call-
- ルーム作成、参加、検索
- パケットの暗号化(AES128)
- 鍵交換 (RSA PBKDF2)
- NAT Traversal (STUN)
- デバッグするためのエディタ拡張
注意点
P2P通信の性質上ネットワーク環境、特にファイアウォールやNAPTによって通信出来ない場合があります。
リレーサーバーを実装される までは、通信可能環境を100%に近づけることが難しいです。その点をご留意ください。
通信出来ない環境のときにエラーを出すPrefabがあるので、それをゲームに組み込むことを推奨します。チュートリアル
導入方法
Githubよりダウンロードできます。いくつか依存しているライブラリもあるので、READMEを読んでダウンロードしてください。
https://github.com/unip2p/unip2pUPM(Unity Package Manager)による依存ライブラリも含めたインストール方法も準備中です。
マッチングサーバーの建て方
自身でマッチングサーバーを建てる必要がありますが、
サーバーに関する知識がなくてもクラウド上で導入、管理できるようなものを用意しています。https://github.com/unip2p/SimpleMatchingServer-Node
チュートリアル
準備中...
完成品プロジェクト
P2P Tanks
UNET Tanks DemoのUniP2P移植版です。
完全な移植が完了次第別リポジトリに分離します。
UniP2Pのパッケージに同梱されています。
https://github.com/unip2p/unip2p実装予定
おおよそ上から順番に実装していきます。
- パケットの再送処理、順序制御
- SyncComponentの追加 (Animator etc...)
- LAN Only P2P Matching
- Large Packet Transfer
- STUN IPv6対応
- Relay Matching Server
- Template Game Project
- Voice and Video Chat
- WebGL(WebRTC and Skyway)
- WebGL over UniP2P
まとめ
個人でUnityでリアルタイムネットワーク通信をする際にどうにもベストプラクティスがないように思えて製作しました。
UNETは公式がグッバイ、ConnectedGamesは一年経っても暗号化されない...、Photonはリレーサーバ経由が必須でバズった時とかLAN内環境に非対応、Mirrorはイケてる。その辺のライブラリのいいとこ取りをしたものが欲しかったのです。
サーバーレスでNAT越えする時はちゃんとやって、LAN内だと外を経由せずに通信する。後は自分でソースコードが弄れればどうとでもなる設計。その辺を目指して作りました。
今後急務なのは、再送処理とチュートリアル。他の機能は最悪各自で実装してくれ!
ついでにPullRequestを投げてくれれば、Good Job!
後はLAN内探索があればマッチングサーバーを建てることなく閉じた環境で使えます。このライブラリは現在(2019/05/21時点)α版です。そのため不具合や機能不備等があります。
玄人の方はぜひIssueやPullRequestを送っていただけると有難いです。
- 投稿日:2019-05-21T12:19:33+09:00
「'TMP_FontAsset' does not contain a definition for 'characterDictionary' and no accessible extension method 'characterDictionary' accepting a first argument of type 'TMP_FontAsset' could be found」エラー解消
エラー内容
以下のような赤いメッセージが表示されるようになりました。Unityのバージョンを変えても解消されません。
Unityバージョン:2019.1.3f1
'TMP_FontAsset' does not contain a definition for 'characterDictionary' and no accessible extension method 'characterDictionary' accepting a first argument of type 'TMP_FontAsset' could be found (are you missing a using directive or an assembly reference?)
解消方法
答えはここにありました。
https://forum.unity.com/threads/i-have-a-problem-with-tiny-unity.665527/Tiny Mode is depending on TextMesh Pro "1.3.0".
'characterDictionary' method is deleted on 1.4.0
so downgrade TextMeshPro to 1.3.0Window -> Package Manager で、「TextMesh Pro」を探して、1.3.0にダウングレードしたら直りました。
- 投稿日:2019-05-21T07:22:57+09:00
実は知らない!?プロジェクトビューの使い方
はじめに
こんにちは、のんびりエンジニアのたっつーです。
ブログを運営しているのでよろしければ見てください。Unityを扱うと絶対に使う画面、Projectビューですね。
使う頻度が多い画面こそ使い方を知っておくと開発効率が上がると思います、そのため今回は Projectビューを色々まとめてみました。Projectとは?
Projectで何ができるのか?
Projectビューでは何ができるのかと言うと、簡単に言うとファイル※1に対しての追加・削除できる画面になります。
- ファイル(シーン・スクリプト・マテリアルなど)を追加・削除
- Assetsフォルダの以下に含まれるファイル ・フォルダ
- ダブルクリックでシーンを切り替え
※1 ファイルとは、シーン・スクリプト・マテリアルなどの実ファイル、サブフォルダを指します。
他ビューとの関係
Project・Hierarchyビューとの関係
上記でSceneを複数作成する事ができると説明しましたが、複数作成する場合はSceneを管理する画面が必要です。
その管理を行う画面が、Projectウィンドウになります。
以下のように、シーン(Scene)を複数作成してダブルクリックで切り替えられるようにできます。
Inspectorビューとの関係
Projectで管理しているファイルを選択すると、そのファイルに紐づいている情報が連動して表示されます。
この状態でInspectorの情報を更新すると、ファイルのデータが更新されます
Projectの基本的な使い方
記事をご確認いただければと思います。
Projectビューの便利な使い方
筆者が便利な使い方を色々とご紹介させていただきます。
アセットストアのインポートが行える
キーワードを入力して、検索対象を「Asset Store」に変更すると。
アセットストアから検索が行われて、ここからインポートが可能になります。
お気に入り機能
上記でもご紹介しましたが再度!
検索欄にキーワードを入力して、★アイコンを選択するとツリー側に Favorites に自分が検索したキーワードが登録できる。
1列・2列で切り替える
Projectの表示を1列・2列の表示が切り替えられます、好みで使いたい方を選んでください。個人的には2列の方がお気に入りが使えるので便利です。
終わりに
どうでしたか、意外と知らないProject(プロジェクト)ビューの使い方などもあったかと思います。いつも使っている画面だからこそ色々な使い方を知っておくと生産性が上がるかなと思いますので、ぜひご活用ください!
よければ ブログ「Unity+AssetStoreおすすめ情報」の方にも色々記載しているのでぜひご参照いただければと思います。
- 投稿日:2019-05-21T07:22:39+09:00
実は知らない!?ゲームビューの使い方
はじめに
こんにちは、のんびりエンジニアのたっつーです。
ブログを運営しているのでよろしければ見てください。Unityを扱うと絶対に使う画面、Gameビューですね。
使う頻度が多い画面こそ使い方を知っておくと開発効率が上がると思います、そのため今回は Gameビューを色々まとめてみました。Gameビューとは?
Unityを起動した時に表示される、以下の画面領域です。
Sceneビューと似ていますが、別物の画面になります。
Gameビューで何ができるのか?
Gameビューでは何ができるのかと言うと、簡単に言うと作ったゲーム・アプリの実行・状態の確認ができます。
- ゲーム・アプリの実行
- 画面切り替え・サイズ変更・ミュートなどの制御
- 実行状態の表示(パフォーマンス)
Sceneビューとの関係
Sceneビューは開発者がゲーム・アプリを制作する画面で、Gameビューはゲーム・アプリをプレイする画面です。
そのため、Sceneビューには表示されるけど Gameビューには表示されないオブジェクトがあります。(下の画像だと、ライト・カメラ・カプセル)
また、Gameビューは基本的にカメラから見た映像が表示されます。
Gameビューの基本的な使い方
記事をご参照いただければと思います。
Gameビューの便利な使い方
便利な使い方を色々とご紹介させていただきます。
Gameビューを複数表示する
カメラが2つある場合に、その2つのカメラ映像を同時に確認する事ができます。(3つ以上でも可能です)
まず2つ目のカメラの設定で、出力先を「Display 2」に変更します。
そして、Gameビューの右上メニューから、新しいGameビューを開いて、左右に並べて一方を「Display 2」の表示に変更すればOKです!
終わりに
どうでしたか、意外と知らないGame(ゲーム)ビューの使い方などもあったかと思います。いつも使っている画面だからこそ色々な使い方を知っておくと生産性が上がるかなと思いますので、ぜひご活用ください!
よければ ブログ「Unity+AssetStoreおすすめ情報」の方にも色々記載しているのでぜひご参照いただければと思います。
- 投稿日:2019-05-21T00:00:50+09:00
【Unity(C#)】Viveコントローラーの振動実装(SteamVR2.0)
Viveコントローラーの振動
SteamVR2.0を対象にViveコントローラーの振動実装を備忘録として記録します。
コントローラーにアタッチusing UnityEngine; using Valve.VR; public class Hapic : MonoBehaviour { public SteamVR_Input_Sources handType; public SteamVR_Action_Vibration hapicAction = SteamVR_Input.GetAction<SteamVR_Action_Vibration>("Hapic"); [SerializeField] bool debug; //振動の強さ三段階 public enum HapicPower { NONE = 0, WEEK = 1000, MIDDLE = 2000, STRONG = 4000 } void Reset() { handType = this.gameObject.GetComponent<SteamVR_Behaviour_Pose>().inputSource; } void Update() { //デバッグ用 (どんぐらいの強さかな~?) if (debug) { ControllerHaptic(HapicPower.STRONG); } } //振動メソッドたち //パターン① public void ControllerHaptic() { float seconds = (float)HapicPower.MIDDLE / 1000000f; hapicAction.Execute(0, seconds, 1f / seconds, 1, handType); } //パターン② public void ControllerHaptic(HapicPower hapicPower) { float seconds = (float)hapicPower / 1000000f; hapicAction.Execute(0, seconds, 1f / seconds, 1, handType); } //パターン③ public void ControllerHaptic(ushort microSecondsDuration) { float seconds = (float)microSecondsDuration / 1000000f; hapicAction.Execute(0, seconds, 1f / seconds, 1, handType); } }振動の設定
Execute
の引数に振幅とやら振幅間隔やらいろいろ項目がありますが、
サンプルシーン内でも使用されていた
Execute(0, seconds, 1f / seconds, 1, handType)
が一番使い勝手良いかと思います。私は変更したい設定として、振動の強さくらいだったので
seconds
の値を変えるだけで十分でした。オーバーロード
オブジェクト指向の便利機能1だそうです。
オーバーロードとは、「引数や戻り値が異なるが名称が同一のメソッドを複数定義する」というオブジェクト指向プログラミングのテクニックである。
振動の強さに関して、
・決められた値
・決められた値の中から選択
・数字で指定
上記3パターン用意しました。呼び出す際はこんな感じです。
//パターン① ControllerHaptic(); //パターン② ControllerHaptic(HapicPower.STRONG) //パターン③ ControllerHaptic(3200);