質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

934閲覧

unityのassetStoreにあるFPSを止めたい

mink.

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/03/04 08:34

編集2020/03/04 14:08

前提・実現したいこと

unityのStandard AssetsにあるFPSControllerを使っているのですが、敵に当たった時に自分自身(FPSController)の動きを止めたいです。
scriptからの制御方法を教えていただきたいです。
(できたら、視点も変わらないようにできたら嬉しいです)

試したこと

rigidbodyを停める
時間を停める(時間を停めるとFPS以外のものも止まってしまいます)
FPSのFirstPersonControllerを違うScriptからアクセスしてspeedを0にする

補足情報(FW/ツールのバージョンなど)

unity.2017.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y0241-N

2020/03/04 08:42

>unityのassetStoreにあるFPSを使っているのですが どのアセットのことを言っているのでしょうか?明確に使っている物を提示してください。 >敵に当たった時に動きを止めたいです。 止めたいのは何ですか?弾ですか?敵ですか?それとも他の物ですか? 質問をする際には回答がもらえるように、どんな情報が必要で他人が見ても解決したい内容が なんなのかを理解できるように質問を作成すると回答率があがりますよ。
mink.

2020/03/04 14:07

Standard AssetsにあるFirstPersonCharacterです。 止めたいのは自分自身(FirstPersonCharacter)の動きです。
Y0241-N

2020/03/05 00:05

敵に当たったとき、と定義されていますが、プレイヤーが敵に接触した時にプレイヤーを止める、という事でしょうか? あと「(できたら、視点も変わらないようにできたら嬉しいです)」とありますが、これはどういう事でしょうか?カメラ操作を一時的にできなくする、という事ですか?それとも現状は敵に接触するとカメラの挙動がぶれたするのですか?
mink.

2020/03/05 15:51

プレイヤーが敵に接触した時にプレイヤーを止めるということです。とりあえず、十字キーで移動がFPSはできると思うのですが、それが条件下で、十字キーを押しても動かないようにしたいです。 (できたら、視点も変わらないようにできたら嬉しいです)というのは、Standard AssetsにあるFirstPersonCharacterはマウスでcameraの視点を変えれると思うのですが、それが、マウスが動いてもcameraの視点が変わらないようにしたいです。
guest

回答1

0

FPSControllを改変できるかやってみましたが、イマイチ分からなかった為考え方だけ回答することにします。
下のスクリプトを参考に自分で書き足してみてください。
考え方は、敵に接触した際にその敵が敵かどうかを判定(OnControllerColliderHit部分)して、敵だった場合コルーチンを呼び出します。

コルーチンの中身はいたってシンプルで、呼び出されたときにStopCFをtrueにして5秒たったらfalseにします。なので、移動処理とカメラの移動をStopCFがfalseの時だけ命令が通るようにしておけばよいので、if(StopCF == true)で括ります。

こんな感じでやれば望む挙動が実装できるはずです。

cs

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Stop : MonoBehaviour 6{ 7 private bool StopCF; 8 void Start() 9 { 10 StopCF = false; 11 } 12 13 void Update() 14 { 15 if(StopCF == true) 16 { 17 移動処理とカメラの移動処理; 18 } 19 } 20 21 private void OnControllerColliderHit(ControllerColliderHit hit) 22 { 23 if(hit.collider.tag == "Enemy") 24 { 25 StartCoroutine(StopCharctor()); 26 } 27 } 28 IEnumerator StopCharctor() 29 { 30 StopCF = true; 31 32 yield return new WaitForSeconds(5); 33 34 StopCF = false; 35 } 36}

投稿2020/03/06 05:49

Y0241-N

総合スコア1066

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問