ตัวอย่างมุมมอง FPS/TPS
2 นาที
นี่คือตัวอย่างการตั้งค่าการควบคุม FPS/TPS。

ขั้นตอนที่ 1 : แก้ไขตำแหน่งกล้อง
เพื่อแก้ไขกล้องใน TPS ให้ไปที่ ZepetoPlayers > ZepetoCamera > Zoom และตั้งค่า Min และ Max ให้เท่ากัน
ตั้งค่า Look Offset Y ให้เป็น 0.1。

เพื่อแก้ไขกล้องใน FPS ให้ไปที่ ZepetoPlayers > ZepetoCamera > Zoom และตั้งค่า Min และ Max ให้เป็น -1
ตั้งค่า Look Offset Y เป็น 0.1。

ขั้นตอนที่ 2 : การเขียนสคริปต์
เพิ่มสคริปต์ที่ใช้การหมุนของกล้องไปยังการหมุนของตัวละคร.
เพิ่มสคริปต์เพื่อแก้ไขการหมุนของตัวละครโดยรับข้อมูลการหมุนกล้อง (OnDragEvent).
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { ZepetoPlayers, ZepetoCharacter, ZepetoScreenTouchpad, ZepetoCamera } from 'ZEPETO.Character.Controller';
import { Vector3, Time, Quaternion} from 'UnityEngine';
import { ZepetoInputControl } from 'RootNamespace';
export default class TPSController extends ZepetoScriptBehaviour {
private zepetoScreenPad: ZepetoScreenTouchpad;
private myCharacter: ZepetoCharacter;
private myInputControl: ZepetoInputControl;
private myCamera: ZepetoCamera;
Awake() {
this.myInputControl = new ZepetoInputControl();
}
Start() {
this.myInputControl.Enable();
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
this.myCamera = ZepetoPlayers.instance.LocalPlayer.zepetoCamera;
this.myCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
this.zepetoScreenPad = ZepetoPlayers.instance.gameObject.GetComponentInChildren<ZepetoScreenTouchpad>();
this.zepetoScreenPad.OnDragEvent.AddListener(deltaVector => {
console.log(`[OnDragEvent] : ${deltaVector.ToString()}`);
// การหมุนของกล้องจะถูกแก้ไขตามการหมุนของตัวละคร.
ZepetoPlayers.instance.ZepetoCamera.transform.RotateAround(this.myCharacter.transform.position,
Vector3.up, deltaVector.x * Time.deltaTime * 80);
});
});
}
Update() {
if ((null == this.myCharacter) || (null == this.myCamera)) {
return;
}
const lookAxisRot = Quaternion.LookRotation(this.myCamera.cameraParent.forward);
const projRot = Vector3.ProjectOnPlane(lookAxisRot.eulerAngles, Vector3.right);
// ทำให้การหมุนของตัวละครตรงกับทิศทางข้างหน้า ของกล้อง.
this.myCharacter.gameObject.transform.rotation = Quaternion.Euler(projRot);
}
}