1. 程式人生 > >第三人稱遊戲開發-常用程式碼(1)

第三人稱遊戲開發-常用程式碼(1)

開發第三人稱遊戲,對於攝像機控制的一個簡單程式碼。。程式碼直接賦給攝像機,把遊戲主角標籤設為Player,攝像機就會自動找到主角並跟隨。 using UnityEngine; using System.Collections; public class FollowPlayer : MonoBehaviour { private Transform player; public float a=6; public float b=6; public float speed = 2; // Use this for initialization void Start () { //這裡我是單獨用了一個Tags程式碼控制所有的標籤 player = GameObject.FindGameObjectWithTag(Tags.player).transform; } // Update is called once per frame void Update () { Vector3 targetPos = player.position + new Vector3(0, a, -b); transform.position = Vector3.Lerp(transform.position, targetPos, speed * Time.deltaTime); Quaternion targetRotation = Quaternion.LookRotation(player.position - transform.position); transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime); } }
---------------------------------------------分割線-------------------------------------------------------------- 這是一個控制主角移動的程式碼,對於主角,先新增元件CharacterController,然後新增一個名為PlayerMove的程式碼(程式碼名字一定要跟class類名一致,否則會報錯),複製以下,你的主角便會簡單移動了。 using UnityEngine; using System.Collections; public class PlayerMove : MonoBehaviour { public float speed = 5; private CharacterController cc; // Use this for initialization void Awake () { cc = this.GetComponent<CharacterController>(); } // Update is called once per frame void Update () { float h = Input.GetAxis ("Horizontal"); float v = Input.GetAxis ("Vertical"); Vector3 targetDir = new Vector3 (-h, 0, -v); cc.SimpleMove(targetDir * speed); transform.LookAt (targetDir + transform.position); } }

------------------------------再分割線------------------------------------ 這是朋友的一段程式碼,控制主角跳躍(使用鍵盤Space),這是一段JS的程式碼,不是C#。程式碼直接賦給主角,主角身上要有CharacterController元件。 #pragma strict var speed : float = 6.0; var jumpSpeed : float = 8.0; var gravity : float = 20.0; private var moveDirection : Vector3 = Vector3.zero; function Update() { var controller : CharacterController = GetComponent(CharacterController); if(controller.isGrounded) { moveDirection = Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); //輸入 moveDirection = transform.TransformDirection(moveDirection); //移動 moveDirection *= speed; //速度 if(Input.GetButton("Jump")) { moveDirection.y = jumpSpeed; } } moveDirection.y -= gravity * Time.deltaTime;//重力 controller.Move(moveDirection * Time.deltaTime);//移動 }  
先分享這麼多,希望對大家有所幫助。