解説

XYZ軸に対応
往復する距離を指定できる
X秒間隔で往復もできる

C#

using UnityEngine;
using System.Collections;

public class SinMove : MonoBehaviour {

    //座標の補正
    //移動するときはこっちを使う
    private Vector3 OriginalPos = Vector3.zero;

    //往復する時間
    //1を指定すれば1秒で往復する
    public float TurnAroundTime = 0f;

    //距離 X1なら X1 ~ X-1 を往復
    public Vector3 Distance = Vector3.zero;

void Awake()
    {
        //位置を記憶する
        OriginalPos = GetComponent<Transform>().position;
    }

//往復移動
void FixedUpdate()
    {
        //(経過時間 * (一周する角度 / 往復時間)) * ラジアンへ変換;
        float SinAngle = (Time.fixedTime * (360 / TurnAroundTime)) * Mathf.Deg2Rad;

        //sinカーブ
        float Result = Mathf.Sin(SinAngle);

        //座標の補正
        GetComponent< Rigidbody >().MovePosition((Result * Distance) + OriginalPos);
    }
}

java

//座標の補正
//移動するときはこっちを使う
var OriginalPos : Vector3;

//往復する時間
//1を指定すれば1秒で往復する
public var TurnAroundTime : float;

//距離 X1なら X1 ~ X-1 を往復
public var Distance : Vector3;

Function Awake()
{
	//位置を記憶する
        OriginalPos = GetComponent<Transform>().position;
}

//往復移動
function FixedUpdate()
{
	//(経過時間 * (一周する角度 / 往復時間)) * ラジアンへ変換;
	var SinAngle = (Time.fixedTime * (360/TurnAroundTime)) * Mathf.Deg2Rad;
	
	//sinカーブ
	var Result = Mathf.Sin( SinAngle );
	
	//座標の補正
	GetComponent.<Rigidbody>().MovePosition( (Result * Distance) + OriginalPos);
}

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー

Grand Theft Auto V 更新停止

Unity5 更新停止

フリーエリア

© 僕の説明書おきばwiki All Rights Reserved.
当サイトの御利用につきまして
いかなるトラブルや
損失・損害等に一切責任を
問わないものとします。

Wiki内検索

管理人/副管理人のみ編集できます