匯入模型後請把RIG 按鈕底下 Animation type 選擇 Humanoid 在按下Apply。
再Project 視窗按下右鍵建立 Animator Controller ,在點兩下就會進入Animator
編輯視窗。
把模型動畫以動作邏輯順序方式拖曳進去Animator 編輯視窗。
再動畫編輯區塊按下右鍵選擇Make Transitionm,會出現
箭頭再指向另一個動畫編輯區塊。
※ 注意: 箭頭方向一定要注意動畫編輯區塊的正確位置。
箭頭方向位置表示動畫撥放的動畫區塊。
之後再Parameters 視窗 點選上面的" + " 這個符號,
再選擇所需的程式控制的基本型別,選完型別後
請把型別視窗命名。
※注意: 在這裡我使用Boolean 型別 程式控制: SetBool。
Float 型別 程式控制: SetFloat。
Int 型別 程式控制: SetInteger。
Trigger 類型 程式控制: SetTrigger。
命名很重要 程式控制的地方及數值,特別注意。
再點選箭頭後,旁編列會出現箭頭所需編輯視窗。
Condition 屬性視窗選擇,型別命名名稱,再調整所需數值。
※注意: Condition 屬性視窗的數值,由程式撰寫那邊控制設定。
角色屬性設定呈現方式:
以看圖方式呈現。
--------------------------------------------
程式部分:
角色控制類別:
using UnityEngine;
using System.Collections;
public class TestPlayerAnimation : MonoBehaviour {
public float speed;
public CharacterController playerController;
private Vector3 position;
public Animator playerAnimation;
// Use this for initialization
void Start () {
position = transform.position;
playerAnimation.GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (0)) {
locatePotation();
}
moveToPosition ();
}
void locatePotation(){
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if(Physics.Raycast(ray, out hit, 1000)){
position = new Vector3(hit.point.x, hit.point.y, hit.point.z);
}
}
void moveToPosition(){
if(Vector3.Distance(transform.position, position)>3){
Quaternion newRotation = Quaternion.LookRotation (position - transform.position, Vector3.forward);
newRotation.x = 0f;
newRotation.z = 0f;
transform.rotation = Quaternion.Slerp(transform.rotation, newRotation, Time.deltaTime * 10);
playerController.SimpleMove(transform.forward * speed);
playerAnimation.SetBool("Test",true);
Debug.Log("ok");
}else{
playerAnimation.SetBool("Test",false);
Debug.Log("no");
}
}
}
攝影機類別:
// The target we are following
var target : Transform;
// The distance in the x-z plane to the target
var distance = 10.0;
// the height we want the camera to be above the target
var height = 5.0;
// How much we
var heightDamping = 2.0;
//var rotationDamping = 3.0;
// Place the script in the Camera-Control group in the component menu
@script AddComponentMenu("Camera-Control/Smooth Follow")
function LateUpdate () {
// Early out if we don't have a target
if (!target)
return;
// Calculate the current rotation angles
//var wantedRotationAngle = target.eulerAngles.y;
var wantedHeight = target.position.y + height;
var currentRotationAngle = transform.eulerAngles.y;
var currentHeight = transform.position.y;
// Damp the rotation around the y-axis
// currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
// Damp the height
currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime);
// Convert the angle into a rotation
// var currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);
// Set the position of the camera on the x-z plane to:
// distance meters behind the target
transform.position = target.position;
// transform.position -= currentRotation * Vector3.forward * distance;
transform.position -= Vector3.forward * distance;
// Set the height of the camera
transform.position.y = currentHeight;
// Always look at the target
transform.LookAt (target);
}
沒有留言:
張貼留言