Tutorial Multiplayer PC yang Sama Layar Terpisah untuk Unity
Dalam tutorial ini, saya akan menunjukkan cara membuat layar terpisah multiplayer di Unity.
Langkah
- Buka Adegan dengan level Anda (dalam kasus saya ini akan menjadi Adegan sederhana dengan beberapa Kubus)

- Buat GameObject baru dan beri nama "Player 1"
- Buat Cube baru dan pindahkan ke dalam objek "Player 1" (Hapus komponen Box Collider-nya)
- Buat beberapa Kubus lagi untuk mata dan mulut (Hapus juga komponen Box Collidernya)

- Pindahkan Kamera Utama ke dalam objek "Player 1" dan arahkan ke Kubus


- Buat Script baru, beri nama "RigidbodyPlayerController" dan pastekan kode di bawah ini ke dalamnya:
RigidbodyPlayerController.cs
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(CapsuleCollider))]
public class RigidbodyPlayerController : MonoBehaviour
{
    public enum PlayerControls { WASD, Arrows }
    public PlayerControls playerControls = PlayerControls.WASD;
    public float movementSpeed = 3f;
    public float rotationSpeed = 5f;
    Rigidbody r;
    float gravity = 10.0f;
    void Awake()
    {
        r = GetComponent<Rigidbody>();
        r.freezeRotation = true;
        r.useGravity = false;
    }
    // Update is called once per frame
    void FixedUpdate()
    {
        // Move Front/Back
        Vector3 targetVelocity = Vector3.zero;
        if ((playerControls == PlayerControls.WASD && Input.GetKey(KeyCode.W)) || (playerControls == PlayerControls.Arrows && Input.GetKey(KeyCode.UpArrow)))
        {
            targetVelocity.z = 1;
        }
        else if ((playerControls == PlayerControls.WASD && Input.GetKey(KeyCode.S)) || (playerControls == PlayerControls.Arrows && Input.GetKey(KeyCode.DownArrow)))
        {
            targetVelocity.z = -1;
        }
        targetVelocity = transform.TransformDirection(targetVelocity);
        targetVelocity *= movementSpeed;
        // Apply a force that attempts to reach our target velocity
        Vector3 velocity = r.velocity;
        Vector3 velocityChange = (targetVelocity - velocity);
        float maxVelocityChange = 10.0f;
        velocityChange.x = Mathf.Clamp(velocityChange.x, -maxVelocityChange, maxVelocityChange);
        velocityChange.z = Mathf.Clamp(velocityChange.z, -maxVelocityChange, maxVelocityChange);
        velocityChange.y = 0;
        r.AddForce(velocityChange, ForceMode.VelocityChange);
        // We apply gravity manually for more tuning control
        r.AddForce(new Vector3(0, -gravity * r.mass, 0));
        // Rotate Left/Right
        if ((playerControls == PlayerControls.WASD && Input.GetKey(KeyCode.A)) || (playerControls == PlayerControls.Arrows && Input.GetKey(KeyCode.LeftArrow)))
        {
            transform.Rotate(new Vector3(0, -14, 0) * Time.deltaTime * rotationSpeed, Space.Self);
        }
        else if ((playerControls == PlayerControls.WASD && Input.GetKey(KeyCode.D)) || (playerControls == PlayerControls.Arrows && Input.GetKey(KeyCode.RightArrow)))
        {
            transform.Rotate(new Vector3(0, 14, 0) * Time.deltaTime * rotationSpeed, Space.Self);
        }
    }
}- Lampirkan skrip RigidbodyPlayerController ke "Player 1" (Anda akan melihat skrip ini akan menambahkan 2 komponen lagi, Rigidbody dan Capsule Collider)
- Tweak Capsule Collider hingga sesuai dengan dimensi Cube.
Berikut langkah-langkah membuat split-screen 2 pemain:
- Gandakan objek "Player 1" dan ganti namanya menjadi "Player 2".
- Di RigidbodyPlayerController ubah Kontrol Pemain menjadi "Arrows".

- Ubah nilai Viewport Rect "Player 1" Kamera menjadi X: 0 Y: 0.5 W: 1 H: 0.5

- Ubah nilai Sudut Pandang "Player 2" Kamera menjadi X: 0 Y: 0 W: 1 H: 0.5


Alternatifnya, Anda dapat mengatur layar terpisah vertikal dengan mengatur nilai di bawah:
X: 0 Y: 0 W: 0.5 H: 1 untuk Kamera 1
X: 0,5 Y: 0 W: 0,5 H: 1 untuk Kamera 2
