とあるUnity参考書で「敵を撃破後に爆破の振動でカメラを揺らす」という項目があります。
上記の記述コードを自分なりに関数にして(引数有り)した場合、カメラの揺れ(振動)がエンドレス揺れてしまいます。
全く同じコードを引数無しで記述した場合、エンドレスの現象は無くなるのですが何故この様な違いが起こるのか理解に困惑しています。
タイトルにもあります様に、関数作成時の注意事項で引数・戻り値について今後の為にも理解したいです。
御教授お願いします!
//敵撃破時、カメラを揺らす--------------変数宣言 public static float vibe = 0; Vector3 def_Pos; // Use this for initialization void Start() { def_Pos = transform.localPosition; } void Update() { _vide(); //_vibe(vibe); //エンドレスで揺れる } //揺らすーーーーーーーーーーーーーーー void _vide() { vibe = Mathf.Clamp(vibe, 0, 0.5f); if (vibe > 0) { Vector3 randomPos; randomPos.x = Random.Range(vibe * -1, vibe); randomPos.y = Random.Range(vibe * -1, vibe); randomPos.z = Random.Range(vibe * -1, vibe); transform.localPosition = def_Pos + randomPos; vibe -= Time.deltaTime; } else { transform.localPosition = def_Pos; } } //エンドレスで揺れるーーーーーーーーー void _vibe(float v) { v = Mathf.Clamp(vibe, 0, 0.5f); if (v > 0) { Vector3 randomPos; randomPos.x = Random.Range(v * -1, v); randomPos.y = Random.Range(v * -1, v); randomPos.z = Random.Range(v * -1, v); transform.localPosition = def_Pos + randomPos; v -= Time.deltaTime; } else { transform.localPosition = def_Pos; } return; }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/29 12:37
2018/01/29 12:58