Unity5学習の際の覚え書き。

×

カメラ追随スクリプトを追加する

Main Cameraを選択し、
Component -> Camera-Control -> Smooth Follow
これがカメラ追随のためのスクリプト。

ターゲットを設定する

Main Cameraのインスペクタに、追加したSmooth FollowのプロパティのTargetで、追随するターゲット対象を選択する。

カメラの位置を変更する

Smooth Followのプロパティで設定する。
Target追随の対象。
Distanceターゲットまでの距離。
Heightカメラの高さ
Look At Angleカメラの位置を、ターゲットを中心とした角度で指定。

アバターをスクリプトで制御する

Mecanim Locomotion Starter Kitのアバターは、標準でスクリプトが用意されている。
Assets -> Locomotion Setup -> Scripts -> LocomotionPlayer.cs

アバター操作の仕組み

アバターの操作では、「Animator」「Locomotion」「JoystickToEvents」といったクラスが使われている。
Animator操作するアバターに組み込まれているAnimatorを管理するクラス。
Locomotion別のスクリプトファイルに用意されているアバター操作のためのクラス。
JoystickToEvents別のスクリプトファイルに用意されている移動方向などの計算をするためのクラス。

Mecanim Locomotion Starter Kitには、LocomotionPlayer.cs以外にもスクリプトファイルが用意されていて、それらによってアバターを操作するために必要な処理や情報が簡単に手に入るようになっている。
LocomotionPlayerでは、それらを使って操作をしている。

LocomotionPlayer.cs

using UnityEngine;
using System;
using System.Collections;
  
[RequireComponent(typeof(Animator))]  

public class LocomotionPlayer : MonoBehaviour {

    protected Animator animator;

    private float speed = 0;
    private float direction = 0;
    private Locomotion locomotion = null;

	// Use this for initialization
	void Start () 
	{
	// Locomotionは、操作するAnimatorインスタンスを引数に指定してインスタンスを作る。
        animator = GetComponent<Animator>();
        locomotion = new Locomotion(animator);
	}
    
	void Update () 
	{
	// AnimatorとCamera.mainがちゃんと用意されていることを確認した上で処理を行う
        if (animator && Camera.main)
		{
            JoystickToEvents.Do(transform,Camera.main.transform, ref speed, ref direction);
            locomotion.Do(speed * 6, direction * 180);
		}		
	}
}
JoystrickToEvents.Do
JoystickToEvents.Do(transform,Camera.main.transform, ref speed, ref direction);
JoystickToEventsのDoというメソッド。
4つの引数はそれぞれ、アバターのTransform、カメラのTransform、速度の値を保管するfloat変数、方向の値を保管するfloat変数。
「ref」をつけておくことで、呼び出したメソッドの方からその変数を書き換えることができる。
つまりJoystickToEvents.Doを実行すると、引数に指定したspeedとdirectionの値が書き換わり、計算した結果がこれらに代入されるようになっている。
普通、メソッドだと返値で結果を渡すが、それだと1つの値しか返せないため、こういった手法をとっている。
アバターを動かす
JoystickToEvents.Doで、変数speedとdirectionに、キャラクターを移動するための速度と方向の値が取り出された。
後はこれらを元に移動を実行する。

locomotion.Do(speed * 6, direction * 180);
引数に、速度と方向を指定する。

コメントをかく


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

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

Menu

【メニュー編集】
Wiki記法ガイド

リンク

ゲームバー大阪心斎橋

ゲームバー大阪梅田

ゲームバー大阪心斎橋

ダーツ&ダイニングバー大阪梅田

メニュー

Unity


スマホ操作

Unity - GameObject

Unity - 3DCG

メンバーのみ編集できます