2015年12月28日 星期一

unity 簡易實現產生正弦波

可堂中有些無趣,於是突發起想來實作一個可被時間改變的sin波。


圖中我們可以看到,圓周轉 a 角度,而在角斜邊長取任一值當作波峰,只要讓圓心時間周轉就可以取得波峰 t 時間的高度。

隨便讓一個圓形周轉吧:

public class RunCircle : MonoBehaviour {
 public Transform t;
 // Use this for initialization
 void Start () {
 
 }
 
 // Update is called once per frame
 void Update () {
  transform.RotateAround (t.position,Vector3.up, 2500);
 }
}

周轉後,我們已經可以取得高度了,其實就是本身物件的值,接著把這個物件丟到另一個叫 single 的script裡面,並讓他不斷產生物件是往前的,就可以實現簡單的波型了!
using UnityEngine;
using System.Collections;

public class Single : MonoBehaviour {
 public Transform shape;
 public GameObject prefab;
 public Transform circlecore;
 // Use this for initialization
 void Start () {
 
 }
 
 // Update is called once per frame
 void Update () {
  transform.position = new Vector3(transform.position.x,transform.position.y,shape.position.z);
  Instantiate(prefab, circlecore.position, Quaternion.identity);
 }
}

記得,產生的物件要有 forward ,並且我設定在3秒鐘時刪除。
void Update () {
  transform.Translate (-1,0,0);
  Destroy (this.gameObject,3);
 }
最後大概會長這樣:

沒有留言:

張貼留言

© Mac Taylor, 歡迎自由轉貼。
Background Email Pattern by Toby Elliott
Since 2014