遊戲是學習 www.GameIsLearning.url.tw ar vr教育遊戲式學習 王啟榮 unity教學網站 行動遊戲學習平台

討論區 > Unity 教學與學習

CharacterController.Move 角色操控範例

chijung 發表於 2020/04/07_19:59

按上、下鍵朝自身座標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課程入門學習筆記)



留言回應
※ 您必需先登入,才能填寫送出。