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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Unity

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

Q&A

解決済

1回答

491閲覧

ifが反応していない?

ichigo_0308

総合スコア41

Unity

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

0グッド

0クリップ

投稿2020/08/21 06:22

<実現したいこと>
対象のオブジェクトを振動させるクラスつくったよーというサイトのプログラムを改造して、2秒立つと振動が止まるプログラムを書いたのですが、ifが反応していなくて、2秒立っても振動しっぱなし。

<ソースコード>

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5/// <summary> 6/// 振動タイプ 7/// </summary> 8internal enum VibrateType 9{ 10 VERTICAL, 11 HORIZONTAL 12} 13 14/// <summary> 15/// 対象オブジェクトの振動を管理するクラス 16/// </summary> 17public class VibrateController : MonoBehaviour 18{ 19 20 [SerializeField] private VibrateType vibrateType; //振動タイプ 21 [Range(0, 1)] [SerializeField] private float vibrateRange; //振動幅 22 [SerializeField] private float vibrateSpeed; //振動速度 23 float count; 24 private float initPosition; //初期ポジション 25 private float newPosition; //新規ポジション 26 private float minPosition; //ポジションの下限 27 private float maxPosition; //ポジションの上限 28 private bool directionToggle; //振動方向の切り替え用トグル(オフ:値が小さくなる方向へ オン:値が大きくなる方向へ) 29 30 // Use this for initialization 31 void Start() 32 { 33 //初期ポジションの設定を振動タイプ毎に分ける 34 switch (this.vibrateType) 35 { 36 case VibrateType.VERTICAL: 37 this.initPosition = transform.localPosition.y; 38 break; 39 case VibrateType.HORIZONTAL: 40 this.initPosition = transform.localPosition.x; 41 break; 42 } 43 44 this.newPosition = this.initPosition; 45 this.minPosition = this.initPosition - this.vibrateRange; 46 this.maxPosition = this.initPosition + this.vibrateRange; 47 this.directionToggle = false; 48 } 49 50 // Update is called once per frame 51 void Update() 52 { 53 count += Time.deltaTime; 54 Debug.Log(count); 55 //毎フレーム振動を行う 56 if (Time.deltaTime > 2) 57 { 58 59 } 60 else 61 { 62 Vibrate(); 63 } 64 } 65 66 private void Vibrate() 67 { 68 69 //ポジションが振動幅の範囲を超えた場合、振動方向を切り替える 70 if (this.newPosition <= this.minPosition || 71 this.maxPosition <= this.newPosition) 72 { 73 this.directionToggle = !this.directionToggle; 74 } 75 76 //新規ポジションを設定 77 this.newPosition = this.directionToggle ? 78 this.newPosition + (vibrateSpeed * Time.deltaTime) : 79 this.newPosition - (vibrateSpeed * Time.deltaTime); 80 this.newPosition = Mathf.Clamp(this.newPosition, this.minPosition, this.maxPosition); 81 82 //新規ポジションを代入 83 switch (this.vibrateType) 84 { 85 case VibrateType.VERTICAL: 86 this.transform.localPosition = new Vector3(0, this.newPosition, 0); 87 break; 88 case VibrateType.HORIZONTAL: 89 this.transform.localPosition = new Vector3(this.newPosition, 0, 0); 90 break; 91 } 92 } 93}

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

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

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

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

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

1T2R3M4

2020/08/21 06:34 編集

FPSの設定はどのくらいでしょうか。 countは正常なのでしょうか。 deltaTimeでなくcountがターゲットなのでは
guest

回答1

0

ベストアンサー

秒数の蓄積までは出来ているのでそれを使っていないのが惜しいところです。
Update内のif文の比較はcountを使ってください。

if (Time.deltaTime > 2)

if (count > 2)

投稿2020/08/21 07:51

Hawn

総合スコア1222

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

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

ichigo_0308

2020/08/22 03:08

ごめんなさい???? 解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問