Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。2017.03.18Unityでオンラインに接続してリアルタイムで他の人とゲームが出来る機能を作成していきます。他の人とオンラインでゲームをする為にサーバーに接続します。その時にそれぞれのキャラクターの位置や敵を攻撃してダメージを与えた、といった情報をサーバーを介して情報をやりとりします。このサーバーを用意したりオンラインに対応したプログラミングをしようと思うと相当な知識と能力を必要とします。こりゃだめだ・・・・とオンライン対応を諦めてしまいます。Unityでもネットワーク対応のコンポーネントが用意されておりそれを使うと比較的簡単に対応できるようです。今回はPhotonCloudというリアルタイムでやりとりをする時に便利なサーバーシステムを利用しオンライン対応していきます。PhotonCloudはUnityのNetworkManagerと似たような感じで使う事が出来るアセットを使いオンライン対応する事が出来ます。UnityNetworkでマルチプレイ対応をしたい方はUnityNetworkでオンライン対応0-UnityNetworkオンラインの概要-UnityNetworkでオンライン対応する為に、予備知識を勉強しておきます。gametukurikata.com2017.12.08から参照してみてください。アセットのインポートや登録等はまた別の記事で行います。PhotonPhotonとはについて。Photonはさまざまなゲーム開発環境で使えるネットワークエンジンですphotonengine.jpUnityのライブトレーニングでもPhotonCloudを利用したリアルタイム対戦の動画があるのでこちらを参考にリアルタイムでやりとり出来るゲームを作っていきたいと思います。今回はオンラインに対応する前にオフラインで動作する主人公と敵キャラクターを作成しておきます。シンプルな動きにしておきオンライン対応した時に大変にならないようにします・・・・・(^_^;)あらかじめ言及しておかなければいけないんですが、スクリプトをJavaScriptで作成していくとスクリプトの連携で結構面倒臭い事になります。C#からJavaScriptを参照する為に別フォルダに移動しなければいけなかったりアセンブリの参照がうまくいかなかったりで、わたくしには出来ませんでした(^_^;)その為、今回はキャラクターの移動やネットワーク接続のスクリプト等は全てC#で記述していきます。移動と攻撃をするCharaスクリプトを作成し取りつけます。Time.deltaTime);}}↑が移動と攻撃をさせる処理です。Controllerを作成しインスペクタのAnimatorに設定します。Float型のSpeed、Bool型のAttackのアニメーションパラメータを作成します。状態と遷移は↑のように作成しSpeedが0.1より上の時Walk、0.1より下の時Idle、AttackがtrueになったらAttack状態へと遷移するように設定します。Timeにチェックを入れます。Behaviourをクリックし新しくAttackEndというビヘイビアを作成します。↑のように設定します。ビヘイビアはC#になります(JavaScriptでも作成出来ます)。{////}}と状態が終わった時にAttackをfalseにしています。AnimatorについてはUnityのアニメーションの切り替えシステムとスクリプトUnityのアニメーションの切り替えシステムであるAnimatorControllerの設定とスクリプトからアニメーションを制御していきます。gametukurikata.com2016.01.20を参照してください。Attackに設定したアニメーションにはAttackStartとAttackEndというアニメーションイベントを設定します。アニメーションイベントに関してはUnityのアニメーションイベントを使うUnityのアニメーションイベントを使い、歩くアニメーションで地面に足を着いた時に足音を鳴らしたり剣を振っている途中で剣を振った時の音を鳴らしたりしたいと思います。gametukurikata.com2017.06.06を参照し設定してください。AttackStartは↑のような位置で発生させます。AttackEndは↑のように剣を振りきった位置で発生させます。ControllerのAttackに設定したアニメーションによってイベントの攻撃開始位置と攻撃終了位置は変わります。Ethanの右手に武器を持たせるEthanに武器を持たせます。Store等からインポートした武器をEthanの右手のボーンの子要素に設定します。↑のようにEthanRightHandの子要素に武器を配置しました。武器を正確に持たせるやり方はUnityでキャラクターに正確に武器を持たせるUnityでキャラクターの手の位置に正確に武器を持たせるように調整します。なんとなく持たせる位置を設定していた人には朗報かも!?gametukurikata.com2016.02.26を参照してください。Colliderを取りつけ横のチェックボックスのチェックを外しておきます。スクリプトからここのチェックをオン・オフして当たり判定を調整します。Triggerにチェックを入れ物理的に当たらないようにします。武器が敵に当たった時に実行するAttackスクリプトを作り武器に取りつけます。{col.GetComponent<Enemy>().Damage(attackPower);}}}武器がEnemyタグを設定したゲームオブジェクトに侵入した場合、相手が持っているEnemyスクリプトのDamage関数を攻撃力を引数にして呼び出します。与えるダメージはインスペクタで設定出来るようにします。アニメーションイベントを受け取るProcessAttackスクリプトの作成アニメーションイベントの作成が出来たらそのイベントを受け取るスクリプトが必要です。Animatorが設定されているゲームオブジェクトであるEthanに新しいスクリプトProcessAttackを作成し取りつけます。false;}}アニメーションイベントと同じ名前の関数を記述する事でアニメーションイベントが発生した時に処理をする事が出来ます。Colliderを指定し、アニメーションの再生位置によってコライダのオン・オフをしています。キャラクターのステータススクリプト次にキャラクターのステータススクリプトStatusを作成し、Ethanに取り付けます。hp;}}これで主人公キャラクターの作成が出来ました。StoreでMonster3という敵のモデルを探しインポートします。モデルをヒエラルキー上にドラッグ&ドロップしたらCharacterControllerを取りつけコライダの調整をしてください。敵キャラクターには新しくEnemyスクリプトを作成し、取りつけます。今回は主人公から攻撃を受けた時のダメージ処理と倒れた時の処理を記述しているだけです。{Debug.Log("敵を倒した");Destroy(gameObject);}}非常にシンプルな作りですね。敵キャラクターはただ立って攻撃を受け続ける事しか出来ません・・・・(-_-)作成したサンプルの動作確認これでオフラインでの主人公と敵キャラクターが出来ました。主人公を操作し敵キャラクターを攻撃して問題がないか確認してください。↑は敵のhpを100に設定し主人公の攻撃力attackPowerを20に設定して試しました。Cloudのアカウント作成からUnityでの設定をやっていきます。Wizard)の設定を行います。マルチプレイ対応(PhotonCloud)Unityでオンラインマルチプレイ対応4-キャラクターを登場させる-Unityのゲームでユーザーがサーバーに接続したら操作キャラクターをゲームの世界に登場させ、他のプレイヤーがキャラクターを動かしたら自分のアプリ上の他のプレイヤーのキャラも同じように動かします。マルチプレイ対応(PhotonCloud)Unityでオンラインマルチプレイ対応3-ネットワーク接続処理-Unityでマルチプレイヤーのゲームに対応する為、ネットワークに接続する為のスクリプトの作成とUIを作成していきます。マルチプレイ対応(PhotonCloud)Unityでオンラインマルチプレイ対応5-プレイヤー名の表示と敵を攻撃した時の処理-Unityのオンラインマルチプレイでプレイヤー名の表示と敵を攻撃した時の処理を作成していきます。UnityのAnimatorの遷移状態をスクリプトで取得し遷移させるかどうかを決めるUnityのパーティクルの粒子1つ1つの衝突をスクリプトで検知するホームオンライン対応マルチプレイ対応(PhotonCloud)スポンサーリンクサイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事に関する質問は送らないでください、返信は期待しないでください(._.))。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。プロフィールになってないな・・・・(-.-)Unityをこれから始める人へこれからUnityを使ってみようという方はUnityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。機能を積み上げていく形になるので便利かも?gametukurikata.com2019.06.21の記事に記載の順番で見て頂くとUnityの基本的な使い方がわかり、簡単なアクションゲームや、TPSゲームの作成までが出来ます。自作タイピングゲームタイピングゲームを作りました。WebGL形式なのでPCのブラウザで遊べます。以下からプレイ出来ます。FinalTypingUnityを使って作成したローマ字入力のタイピングゲームです。gametukurikata.com2022.01.02お知らせ2023/01/24個人的にUnity2022.2.3f1をインストールしました。2022/10/14UnityのIKを使って足の位置と角度を地面に合わせる機能Unityのゲームでキャラクターの両足が別の高さの地面の上にある時にそれぞれの足をそれぞれの地面につけるようにする機能を作成しますgametukurikata.com2016.04.11機能を少し修正しました。2020/09/19コメント欄は閉鎖しました。今までコメントを投稿してくださった方はありがとうございました。(^^)/2018/08/07わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。gametukurikata.com2019.08.01Unityを使い始めたばかりの人がつまづきやすい点を解消するUnityを使い始めたばかりの人が結構な確率で陥る不具合や疑問点を解消していきます。基本的にはブログに寄せられた質問への回答という感じです。gametukurikata.com2018.12.04も参照してみてください。小・中学生によるデジタルコンテンツ開発の全国大会ですuycc.unity3d.jp2022年大会の先行エントリーが開始されているようです。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。記事の内容に質問がある方へUnityを使った3Dゲームの作り方(かめくめ)の歩き方UnityのJavaScriptとC#を読み替えてどちらでも対応出来るようにするホーム検索トップサイドバータイトルとURLをコピーしました。