Hướng dẫn nhiều người chơi trên cùng một PC chia màn hình cho Unity

Trong hướng dẫn này, tôi sẽ hướng dẫn cách tạo màn hình chia nhỏ multiplayer trong Unity.

bước

  • Mở Cảnh theo cấp độ của bạn (trong trường hợp của tôi, đó sẽ là Cảnh đơn giản với một số Hình khối)

  • Tạo một GameObject mới và gọi nó "Player 1"
  • Tạo một Khối mới và di chuyển nó vào bên trong đối tượng "Player 1" (Xóa thành phần Box Collider của nó)
  • Tạo thêm một vài khối cho mắt và miệng (Bỏ cả các thành phần Box Collider của chúng đi)

  • Di chuyển Camera chính bên trong đối tượng "Player 1" và hướng nó vào Khối lập phương

  • Tạo một Tập lệnh mới, đặt tên là "RigidbodyPlayerController" và dán đoạn mã bên dưới vào bên trong nó:

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);
        }
    }
}
  • Đính kèm tập lệnh RigidbodyPlayerController vào "Player 1" (Bạn sẽ nhận thấy nó sẽ thêm 2 thành phần nữa là Rigidbody và Capsule Collider)
  • Tinh chỉnh Capsule Collider cho đến khi phù hợp với kích thước của Cube.

Dưới đây là các bước để tạo màn hình chia nhỏ cho 2 người chơi:

  • Nhân đôi đối tượng "Player 1" và đổi tên thành "Player 2".
  • Trong RigidbodyPlayerController thay đổi Điều khiển người chơi thành "Arrows".

  • Thay đổi giá trị Viewport Rect của "Player 1" Camera thành X: 0 Y: 0.5 W: 1 H: 0.5

  • Thay đổi giá trị Chỉnh sửa khung nhìn của "Player 2" Camera thành X: 0 Y: 0 W: 1 H: 0.5

Ngoài ra, bạn có thể thiết lập chia đôi màn hình dọc bằng cách đặt các giá trị bên dưới:

X: 0 Y: 0 W: 0.5 H: 1 cho Camera 1

X: 0,5 Y: 0 W: 0,5 H: 1 cho Camera 2

Nguồn
📁Split-Screen.unitypackage27.74 KB
Bài viết được đề xuất
Hướng dẫn về bản đồ nhỏ kiểu tổng quan cho Unity
Hướng dẫn menu chính cho Unity
Tạo giao diện người dùng màn hình người chiến thắng trong Unity
Tạo màn hình tải trong Unity
Làm việc với hệ thống giao diện người dùng của Unity
Cách tạo trò chơi kinh dị trong Unity
Chọn mẫu kiếm phù hợp cho dự án Unity của bạn