20210417のUnityに関する記事は3件です。

Unity(ユニティ)とは

ゲーム開発でよく利用されているUnity(ユニティ)について初心者向けに説明した記事です。 Unity(ユニティ)とは、ユニティ・テクノロジーズという会社がだれでも利用できるようにしているソフトウェアです。このソフトウェアはゲームエンジンとよばれ、ゲームを手軽に作るために役に立ついろいろなツールが集まって出来ていて、ゲームの開発にぴったりです。Unityを使う上で必要な物はパソコンのみです。 Unityを使うと下記のようにいろいろと良いことがあります。 簡単にゲームが作れる。だれでも手軽に使用できてプログラム初心者でも簡単なゲームがすぐに作れます。 無料から利用できますのでこれからゲーム作りをはじめようとしている初心者やしゅみでゲーム作りを行う人でも安心して使用できます。チュートリアルもたくさんありますので、すぐにゲームを作り始められます。 3Dだけでなく、2Dのゲームにも対応していますのでUnity1つではば広いゲーム作りが可能です。 私たちの身近にあるスマートフォンで使われているiOSやAndroidなどに向けたゲーム作りが可能です。OSはMacとWindowsどちらにも対応しています。(iPhone用ゲームを作るためにはMac専用の機能と連動させる必要があるため注意しましょう。) いろいろなプラットフォームに対応していますので、Nintendo Switch、PlayStation、Xboxなどいろいろなゲーム機向けにゲーム作りが可能です。 世界でも多くの人が利用しているので情報が多いです。分からないことを質問したり、回答する世界がすでに作られていますので、分からないことがあってもすぐに解決することができます。 ユーザーが自分で作成したプログラムの部品や 3D の材料などを登録して公開したり、売ったりできるアセットストアがあり、だれでも手軽に利用することができます。無料で配られているものもたくさんあります。 ↓ がUnity(日本語)のホームページです。ぜひ参考にしてください。 Unityのホームページ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Unity]Androidネイティブプラグイン(Java言語)

概要 Unity単体では使う事の出来ないAndroidの機能もAndroidプラグインを呼び出すことで使えるようになります。 この記事は、導入するための最小限のポイントをまとめたものです。詳しい解説は他の方の記事を参考にしてください(この記事の一番下にもリンクを貼っています) この記事はAndroidStudio4.0.1を使用しています。 1) プロジェクト作成 AndroidStudioを起動してFile > New > New Projectと進みます テンプレート選択画面ではNo Activity > Nextと進みます Nameに適当な名前を入力してください(Package nameは自動入力されます)LanguageはJavaを選びます 2) モジュール作成 File > New > New Moduleと進みます(New Moduleが押せない時はパソコンが処理してる最中なのでしばらく待ってみてください) Android Library > Nextと進みます 設定を確認してFinishを押します 3) appモジュールはいらないので削除します File > Project Structure 1)Modulesを選ぶと右の画面が切り替わります。 2)appが選択されているのを確認して『-』ボタンを押すとappの消去が決定されます 3)最後にOKを押します(OKを押さずにウィンドウを閉じると消去されないので注意してください) 4) Unityクラスライブラリを追加 Unityのプログラムフォルダ内にあるUnityクラスライブラリを貰ってきます スクリーンショットの様にProjectを選び libsを表示しておきます 環境によって違いますがUnityのプログラムフォルダをたどった先にあるclasses.jarを先ほどのlibsフォルダへコピーします(ドラッグアンドドロップするとファイルの移動になってしまいます。一度別のフォルダにコピーしてからそのファイルをlibsへドラッグアンドドロップすると上手くいきます) 5) モジュールレベルのbuild.gradleを修正する スクリーンショットの様にフォルダをたどりbuild.gradleをダブルクリックすると右の方にコードが表示されます。 コードを下にスクロールして implementation fileTree(dir: "libs", include: ["*.jar"]) この一行を compileOnly fileTree(dir: "libs", include: ["*.jar"]) と書き換えます。修正が終わったら右上のSync Nowを押します。成功するとSUCCESSFULと表示されるはずです。 6) プラグイン用のコードを作成する スクリーンショットの様にAndroidを選択します スクリーンショットの丸印のフォルダ上で右クリック > New > Java Class ポップアップが表示されるのでクラス名を入力します プラグインのコードを入力します Unity側から呼ばれるメソッドがFromUnity()で、このメソッドからUnity側のFromAndroid()を呼ぶことになります package com.example.mylibrary; import com.unity3d.player.UnityPlayer; public class PluginTest { public static String FromUnity() { UnityPlayer.UnitySendMessage("UnityTest" , "FromAndroid" , "メソッド呼び出し"); return( "戻り値" ); } } Build > Make Module プラグインが出力されたのでフォルダをたどって表示しておきます。 Unityでフォルダを作ります。 Assets > Plugins > Android 作成したフォルダに先ほどの出力されたプラグインをドラッグアンドドロップします。 UnityTest.csを新規作成してコードを記述します。 using UnityEngine; using UnityEngine.UI; public class UnityTest : MonoBehaviour { [SerializeField] Text txtMessage; [SerializeField] Button btnAndroid; void Start() { btnAndroid.onClick.AddListener(CallAndroidPlugin); txtMessage.text = "初期値"; } /// <summary> /// ボタンが押されたらプラグインを呼ぶ /// </summary> public void CallAndroidPlugin() { using (AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.example.mylibrary.PluginTest")) { txtMessage.text += androidJavaClass.CallStatic<string>("FromUnity"); } } /// <summary> /// プラグイン側からUnityを呼ぶ /// </summary> public void FromAndroid(string str) { txtMessage.text += str; } } uGUIでテキストとボタンを用意します 空のオブジェクトを作って先ほど作ったUnityTestをAddComponentしてください AndroidのスマフォをパソコンにUSB接続してBuild And Runします(うまく出来ない時はスマフォ側の設定を変更する必要があるかもしれません) スマフォ画面で実行結果を確認します。ボタンを押すたびにAndroidプラグインを介して処理が行われることが確認できます。(ボタンを押すたびにテキスト文字が増え続けます) 参考にさせていただいた記事 こちらの記事の方が詳しくわかりやすく書かれています。自分のつまずいた箇所とバージョンの差による表示の違いをまとめるために今回記事にしてみました。 Unity向けAndroidネイティブプラグインの作り方 https://gaprot.jp/2020/03/30/unity-android-native-plugin/ 【Unity】Android Nativeプラグイン開発 最小構成でなるべくわかりやすくまとめた https://ghoul-life.hatenablog.com/entry/2019/01/26/030622 追記 プラグイン側のUnitySendMessageの引数は 第一引数 プラグイン側から呼び出したい「Unityのクラス名」 第二引数 プラグイン側から呼び出したい「Unityのメソッド名」 第三引数 呼び出したメソッドに渡す引数 UnityPlayer.UnitySendMessage("UnityTest" , "FromAndroid" , "メソッド呼び出し"); Unity側のAndroidJavaClassの引数は Java側のコードのpackageに指定されている部分 + クラス名 で記述します AndroidJavaClass("com.example.mylibrary.PluginTest")
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unity初心者が2か月で3Dゲーム開発した際に痒い所に手が届いた参考記事

はじめに  2月から本格的にUnityを用いたゲーム開発をはじめ、なんとか2か月間で完成にこぎつけました。ここでは少し躓いたときに参考になった技術や記事の紹介をおこなっていこうと思います。 制作したゲーム”Record Attacker”  制作したゲームはこちらをダウンロードして遊ぶことができます。 ゲーム内容:キャラコンを駆使して最速でゴールせよ!様々なギミックを乗り越えオンラインランキング1位を目指せ! とても単純ですね。今回はマ〇オ64のようなRTAが楽しそうなアクションゲームを作るということと個人制作特有の安っぽさを無くしたいという目標を掲げて開発しました。制作者2人のオンライン共同開発でした。 参考になった技術 GitHubの使い方  オンライン共同開発ではほぼ必須のGitHub。今まで読んできた記事の中で一番分かりやすかった@TakumaKurosawa さんによる"GitHub実践ハンズオン" 難易度別に分けられているため、ほとんど躓くことなく環境構築をすることができました。 オンラインログイン・ランキング  個人制作でのオンラインログイン・ランキング実装に最適なNIFCLOUDのmobile backend(NCMB)。 サンプルの説明が丁寧で、制作途中に組み込んでもスムーズに実装することができました。 美しいScene切り替え  Scene切り替えがお洒落だとゲーム全体の一体感が増します。フェードイン・フェードアウトを用いたScene切り替えを以下の記事を参考に実装しました。 TPS視点の深度設定等  CinemachineのFreeLookCameraを用いるとマウスを使って自由に見渡せるカメラワークを作成することができます。そのFreeLookCameraの説明をしてくれている記事がこちら。 特定のオブジェクト同士の衝突判定を無くす  壁ジャンプ用のColliderを新たにキャラクタに設定したため、もとのCupsule Colliderと接触判定が常に出て通常モーションが反映されないことがありました。その問題を解決する方法がレイヤでの設定。こちらの記事を参考にしました。 AnimationClipの詳細  外部のアニメーションをAnimator Controllerで自然に遷移するためにAnimation Clipで下準備する必要があります。以下の記事 ではAnimation ClipのInspector内の数値ごとに説明がされているので体感的に理解できます。 Animator遷移の優先順位 キャラクタを操作する上で地味だがかなり気になる問題点。例えば、走りの切り返しとジャンプはどちらも走りモーションから遷移するが、優先順位は切り返しの方が早いと自然な操作性となる。遷移の優先順位含めたAnimator Controllerを詳しく説明した記事がこちら。 足元の土煙  ビジュアルが大幅に向上する土煙。こちらの記事を参考にしました。 先行入力  格ゲーではないとはいえ、先行入力はあった方が操作性がかなり向上します。参考にした記事はこちら。 指定フレーム分キー入力をリストで格納して判定する手法で実装しました。 アニメーションに応じてコライダの大きさを変化  今回用いたアニメーションはジャンプ時に体を丸めるため通常のコライダサイズでは地面着地時にアニメーションでは着地できそうなのにコライダがぶつかって着地できない問題点が生じた。そのため、アニメーションによってコライダのサイズを随時変更する必要がある。その際に参考になった記事はこちら。 コライダサイズを調整することで理不尽なゲームミスを減らせるので重要な要素の1つです。 あとがき  NCMBを用いたランキング機能実装の際に調べても出てこなかった問題点や壁ジャンプの実装など自分で書くと役に立つ人がいるかもしれない内容は今後記事にしようかなと考えています。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む