動きのサンプル

サイン波を利用した動き

          case STEP.RUN:
           {
               //Mathf.Repeatは(stepTime % 1)と同じ動作 1秒で1周するラジアン 
               float wave_angel = 2 * Mathf.PI * Mathf.Repeat(stepTime,1);    //ラジアン0~6.18がぐるぐる回る
               float wave_offset = Mathf.Sin(wave_angel);                    //結果的に-1~0~1とサイン波でぐるぐる行来きする
               new_position.z = initial_position.z + wave_offset;
               transform.rotation = Quaternion.AngleAxis( 30.0f * Mathf.Sin(wave_angel), Vector3.up);
           
               //蛇行+左右に振り振りする動き
               
           }

ループする動き1


using UnityEngine;
using System.Collections;

public class countTest : MonoBehaviour {

  // Use this for initialization
   void Start () {
   }
   
   // Update is called once per frame
   void Update () {
       transform.position = new Vector3((Mathf.Lerp(10,20,Time.time % 1)),0,0);
   }
}

後で気がついたがPingPong()を使う方が良さそう


徐々に目標地点に減速しながら接近し最終的に目標地点に到達する動き


これはLerpの特殊な使い方で第一引数に更新される値を入れることで第三引数が固定であるにも関わらず動き続ける
最終的に、極小さな値となり「静止したように見える」状態になるが静止していないので
物体をスナップさせる処理』のサンプルのようにスナップさせる処理を追加すると良いだろう

using UnityEngine;
using System.Collections;

public class countTest : MonoBehaviour {

  // Use this for initialization
   void Start () {
   }
   
   // Update is called once per frame
   void Update () {
       
       transform.position = new Vector3(Mathf.Lerp(transform.position.x,30.0f,0.2f),0,0);
   }
}

メニュー



  • 最終更新:2014-06-13 12:09:16

このWIKIを編集するにはパスワード入力が必要です

認証パスワード