Split-Screen Same-PC Multiplayer Tutorial til Unity

I denne tutorial vil jeg vise, hvordan man laver en split-screen multiplayer i Unity.

Trin

  • Åbn en scene med dit niveau (i mit tilfælde vil det være en simpel scene med nogle terninger)

  • Opret et nyt GameObject og kald det "Player 1"
  • Opret en ny terning og flyt den ind i "Player 1"-objektet (fjern dens Box Collider-komponent)
  • Lav et par flere kuber til øjne og mund (fjern også deres Box Collider-komponenter)

  • Flyt hovedkameraet ind i "Player 1"-objektet og peg det mod en terning

  • Opret et nyt script, navngiv det "RigidbodyPlayerController" og indsæt koden nedenfor i det:

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);
        }
    }
}
  • Vedhæft RigidbodyPlayerController-scriptet til "Player 1" (Du vil bemærke, at det vil tilføje yderligere 2 komponenter, Rigidbody og Capsule Collider)
  • Tweak Capsule Collider, indtil den matcher terningens dimensioner.

Nedenfor er trinene til at lave en 2-spiller split-screen:

  • Dupliker "Player 1"-objektet og omdøb det til "Player 2".
  • I RigidbodyPlayerController skal du ændre Player Controls til "Arrows".

  • Skift Viewport Rect-værdier for "Player 1" Kamera til X: 0 Y: 0,5 B: 1 H: 0,5

  • Skift Viewport Rect-værdier for "Player 2" Kamera til X: 0 Y: 0 B: 1 H: 0,5

Alternativt kan du konfigurere en lodret delt skærm ved at indstille værdierne nedenfor:

X: 0 Å: 0 B: 0,5 H: 1 for kamera 1

X: 0,5 Y: 0 B: 0,5 H: 1 for kamera 2

Kilde
📁Split-Screen.unitypackage27.74 KB
Foreslåede artikler
Objekt Glow Effect Tutorial til Unity
Oversigtstype Minimap Tutorial for Unity
Hovedmenuvejledning til Unity
Night Vision Image Effect Efterbehandlingsvejledning til Unity
Valg af de rigtige sværdmodeller til dit Unity-projekt
Sådan tilføjes zombier til Unity-spil
Kraften ved pladsholderteksturer til prototyper i enhed