Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。1今回は敵にダメージを与えた時に一気にダメージ分のHPを減らすのではなく1ずつHPを減らす演出を加えたいと思います。HPがどういう風に減っていくかをわかりやすくする為に敵のHPを頭上に数値として表示しておきます。Unityで敵キャラクターのHPを頭上に表示するUIを作成Unityで敵キャラクターのHPを表すUIを頭上に表示してキャラクターと一緒に移動するようにします。20:51ではメーターで作成していますが、こちらのメーターでも同じように作成する事が出来ます。↑のような感じの機能が出来上がります。与えるダメージは1回で1000にしています(記事を見ないとどんなもんかわからないかも?)。この記事を最初に作った時より良い感じになりました(謎)その分、サンプルは雑になっていますけどね・・・・(^_^;)スポンサーリンクHP表示用UIの作成まずは人型キャラクターの子要素にHP表示用UIを作成していきます。敵キャラクターの子要素で右クリック→UI→Canvasを作成し、名前をDamageUIとします。HPの子要素にUI→Textを作成します。上がDanmageUIのインスペクタです。Spaceにして、通常のゲームオブジェクトと同じように扱えるようにします。RotateDamageUIスクリプトはHPのUIが常にカメラの方向を向くようにする為のスクリプトです。Camera.main.transform.rotation;}}これで敵キャラクターのHP用のUIが完成しました。上が敵キャラクターのインスペクタです。実際にはCubeを作成して名前をEnemyにし、TagにEnemyを設定しただけですが・・・(修正前は人型キャラクターにしてました)EnemyStatus(敵のステータス管理スクリプト)とEnemyController(敵の行動処理スクリプト)を新しく作り設定しておきます。スクリプトは後で作成します。上のようにHPのUIが表示されるように配置します。ここまで出来たら敵キャラクターをAssetsフォルダにドラッグ&ドロップしてプレハブ化しておきます。これでHPを表示するUIを持った敵キャラクターが量産出来ます。敵のステータス保持スクリプトEnemyStatusの作成EnemyStatusを作成します。0f;}}}EnemyStatusはHPを保持したり、ダメージを受けた時に徐々にHPを減らす処理を担当します。ダメージを受けたらSetDamageメソッドを呼び出し、ダメージ値を保持します。Updateメソッドではダメージがある時に前にダメージを受けてから指定した時間経過していたらダメージを減らす処理をします。トータルのダメージ量を一気に減らすとカウントダウンが出来ないので、トータルのダメージ量を10で割った商を1回で減らすようにします。1200のトータルダメージがあったとしたら10で割った商は120なので1回の処理で120減らします。最終的には10で割ると商が0になるので、その時は余りを減らすダメージ量にします。HPが0以下になったら自身(敵)を削除するようにします。次は敵キャラクター操作スクリプトEnemyControllerです。(damage);}}敵キャラクター操作スクリプトと言っていますが、今回は動かす事はしないので、ダメージを受けた時の処理だけを記述しています。TakeDamageメソッドは主人公の攻撃が当たった時に呼ぶメソッドでダメージ値を受け取ります。実際に減らす処理はEnemyStatusスクリプトで行っていますので、ダメージ量をEnemyStatusのSetDamageメソッドを呼び出して渡しています。次にEnemyControllerのTakeDamageメソッドを呼び出す処理を追加していきます。20:53で弾が敵に当たった時にTakeDamageメソッドを呼び出すようにします。(近接攻撃等で敵を攻撃した時にTakeDamageメソッドを呼び出す処理でも同じように作成してください。)弾が敵に当たった時の処理BulletAttackにTakeDamageメソッドを呼び出す処理を追加それでは弾が敵に当たった時の処理BulletAttackにTakeDamageメソッドを呼び出す処理を追加します。{col.gameObject.GetComponent<EnemyController>().TakeDamage(100);Destroy(gameObject);}}}弾のゲームオブジェクトを消す前にEnemyControllerのTakeDamageメソッドに引数100(ダメージ値)を渡して呼び出します。(今回の場合はダメージ値は常に100になります)その後、弾のゲームオブジェクトを消します。HPが少しづつ減るかどうかの確認これで機能が完成したので敵を攻撃して試してみましょう。HPが少しづつ減っていくのが確認出来ます。連続で攻撃が当たれば前の攻撃で受けたダメージ分は一気に計算されそこからまた少しづつ減るようになっています。↑のサンプルは最初に作成した仕様でのサンプルでダメージを減らしている時に攻撃をするとダメージを完全に減らした値から再度ダメージを与える事になります。機能に修正を加えて攻撃を与えた時はダメージ量だけ増やし、減らす処理はEnemyStatusスクリプトで行うように変更しました。これでUnityで敵にダメージを与えた時に少しづつHPを減らす機能を作成が完了しました。HPを減らしていく間隔時間を設定しましたが、あんまり使わないかも・・・・(^_^;)間隔時間を0にしても早すぎるってことはなさそうですしね。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。プロフィールになってないな・・・・(-.-)Unityをこれから始める人へこれからUnityを使ってみようという方はUnityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。21:43の記事に記載の順番で見て頂くとUnityの基本的な使い方がわかり、簡単なTPSゲームの作成までが出来ます。かめくめちゃんが今遊んでいるゲーム零をまたやりたくなったので最初からやり直し。WiiUのもやりたいので本体と一緒に買うしかないなぁ・・・。お知らせ2020/02/21個人的にUnity2019.3.2f1をインストールしました。2020/01/31個人的にUnity2020.1.0a21(アルファ版)をインストールしました。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。