92 lines
2.1 KiB
C#
92 lines
2.1 KiB
C#
|
//
|
|||
|
//RandomWind.cs for unity-chan!
|
|||
|
//
|
|||
|
//Original Script is here:
|
|||
|
//ricopin / RandomWind.cs
|
|||
|
//Rocket Jump : http://rocketjump.skr.jp/unity3d/109/
|
|||
|
//https://twitter.com/ricopin416
|
|||
|
//
|
|||
|
//修正2014/12/20
|
|||
|
//風の方向変化/重力影響を追加.
|
|||
|
//
|
|||
|
|
|||
|
using UnityEngine;
|
|||
|
using System.Collections;
|
|||
|
|
|||
|
namespace UnityEngine.Rendering.Toon.Universal.Samples
|
|||
|
{
|
|||
|
public class RandomWind : MonoBehaviour
|
|||
|
{
|
|||
|
private SpringBone[] springBones;
|
|||
|
public bool isWindActive = false;
|
|||
|
|
|||
|
private bool isMinus = false; //風方向反転用.
|
|||
|
public float threshold = 0.5f; // ランダム判定の閾値.
|
|||
|
public float interval = 5.0f; // ランダム判定のインターバル.
|
|||
|
public float windPower = 1.0f; //風の強さ.
|
|||
|
public float gravity = 0.98f; //重力の強さ.
|
|||
|
public bool isGUI = true;
|
|||
|
|
|||
|
|
|||
|
// Use this for initialization
|
|||
|
void Start ()
|
|||
|
{
|
|||
|
springBones = GetComponent<SpringManager> ().springBones;
|
|||
|
StartCoroutine ("RandomChange");
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// Update is called once per frame
|
|||
|
void Update ()
|
|||
|
{
|
|||
|
|
|||
|
Vector3 force = Vector3.zero;
|
|||
|
if (isWindActive) {
|
|||
|
if(isMinus){
|
|||
|
force = new Vector3 (Mathf.PerlinNoise (Time.time, 0.0f) * windPower * -0.001f , gravity * -0.001f , 0);
|
|||
|
}else{
|
|||
|
force = new Vector3 (Mathf.PerlinNoise (Time.time, 0.0f) * windPower * 0.001f, gravity * -0.001f, 0);
|
|||
|
}
|
|||
|
|
|||
|
for (int i = 0; i < springBones.Length; i++) {
|
|||
|
springBones [i].springForce = force;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void OnGUI ()
|
|||
|
{
|
|||
|
if (isGUI)
|
|||
|
{
|
|||
|
Rect rect1 = new Rect(10, Screen.height - 40, 400, 30);
|
|||
|
isWindActive = GUI.Toggle(rect1, isWindActive, "Random Wind");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// ランダム判定用関数.
|
|||
|
IEnumerator RandomChange ()
|
|||
|
{
|
|||
|
// 無限ループ開始.
|
|||
|
while (true) {
|
|||
|
//ランダム判定用シード発生.
|
|||
|
float _seed = Random.Range (0.0f, 1.0f);
|
|||
|
|
|||
|
if (_seed > threshold) {
|
|||
|
//_seedがthreshold以上の時、符号を反転する.
|
|||
|
isMinus = true;
|
|||
|
}else{
|
|||
|
isMinus = false;
|
|||
|
}
|
|||
|
|
|||
|
// 次の判定までインターバルを置く.
|
|||
|
yield return new WaitForSeconds (interval);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|