按上、下鍵朝自身座標Z軸方向前、後移動,按左、右鍵以Y軸為軸心旋轉。
有別於 Unity 官方範例,並解決了站在原地跳不起來的問題。
using System.Collections;
using UnityEngine;
public class script_Example : MonoBehaviour
{
CharacterController cc;
float speed = 3.0f; // 移動速度
float rotate = 180.0f; // 旋轉速度
float jumpH = 9.0f; // 跳躍高度
float gravity = 20.0f; // 重力
Vector3 moveDirection = Vector3.zero, vDir = Vector3.zero;
void Start(){
cc = GetComponent<CharacterController>();
}
void Update(){
if ( Input.GetKey("left") ){ transform.Rotate( 0, -rotate* Time.deltaTime, 0 ); }
if ( Input.GetKey("right") ){ transform.Rotate( 0, rotate* Time.deltaTime, 0 ); }
if ( cc.isGrounded ){
moveDirection = Input.GetAxis("Vertical") * transform.forward;
moveDirection *= speed;
if (Input.GetKeyDown("space")){ vDir.y = jumpH; }
}
else{
vDir.y -= gravity * Time.deltaTime;
}
cc.Move( (moveDirection + vDir) * Time.deltaTime );
}
}
建議延伸閱讀:
>>
unity CharacterController 角色碰撞偵測
>>
unity Collision Trigger 碰撞偵測與觸發對應表
>>
unity C# 語法教學入門
>>
Unity Script 常用語法教學(unity課程入門學習筆記)