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

Sumber
📁Split-Screen.unitypackage27.74 KB
Artikel yang Disarankan
Tutorial Minimap tipe ikhtisar untuk Unity
Tutorial Menu Utama untuk Unity
Tutorial Pasca Pemrosesan Efek Gambar Night Vision untuk Unity
Membuat UI Layar Pemenang di Unity
Memilih Model Pedang yang Tepat untuk Proyek Persatuan Anda
Halaman Modular - Fondasi yang Kuat untuk Lingkungan Virtual
Membuat Layar Pemuatan di Unity