[Unity]3Dビューワな動き

3Dビューワ

Unityでの開発での細かなメモを今後残していこうと思います。
今回は3Dビューワ的な動きの実装です。

元々はキー入力に合わせて回転方向を変える球体の実装をしようと思っていたのですが、
バグで回転が途中で止まってしまった…というものです。
よく考えるとこれはこれで、3Dモデルのビューアとしては便利だなと思ったので
コードをメモしておこうと思います。

using UnityEngine;
using System.Collections;

/**
 * RollingController
 * 摩擦のある床で転がるボールのように、向かう方向に対応した回転を行うスクリプト
 */
public class RollingController : MonoBehaviour {

	// 速度制御用変数
	public float roll_speed = 1.0f;

	// Use this for initialization
	void Start () {

	}

	// Update is called once per frame
	void Update () {
				RollControll ();
	}

	// Rollcontroll
	void RollControll()
	{
		// キーボード入力の上下をZ軸+方向の単位ベクトルとの差分を取る
		Vector3 inputV = new Vector3(0, -Input.GetAxisRaw("Vertical"), 0);
		Quaternion diffZ = Quaternion.FromToRotation (Vector3.forward, inputV);
		// キーボード入力の左右をX軸+方向の単位ベクトルとの差分を取る
		Vector3 inputH = new Vector3(0, -Input.GetAxisRaw("Horizontal"), 0);
		Quaternion diffX = Quaternion.FromToRotation (Vector3.right, inputH);
		Quaternion diff = diffZ * diffX;

		// 回転を合成する
		gameObject.transform.rotation =
		Quaternion.Slerp (gameObject.transform.rotation,
				  diff,
				  Time.deltaTime * roll_speed);
	}
}

実装はこれだけ。

ポイントは差分で回転させるところと、回転を適用する際に
Slerpで少しずつ回転させている点です。

とりあえず、次はちゃんと回転させよう…。
UnityWebPlayerのバイナリを置きたかったのですが、Wordpress管理にすると色々と面倒ですね…。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です