Beispiel #1
0
    private void InitializeLevel()
    {
        IInputController[] inputControllers = InputControllerManager.CreateControllers(configuration.playerCount);
        players = new PlayerController[configuration.playerCount];

        var viewRects = GetViewRects(configuration.playerCount);

        // Find spawn points and hide them from view. We can't unactivate them from elsewhere before used here.
        spawnPoints = FindObjectsOfType <PlayerSpawnPoint>();
        for (int i = 0; i < spawnPoints.Length; i++)
        {
            spawnPoints[i].gameObject.SetActive(false);
        }

        for (int i = 0; i < configuration.playerCount; i++)
        {
            OrbitCameraTP orbitCamera = Instantiate(
                orbitCameraPrefab,
                spawnPoints[i].Position + Vector3.left * 200f,
                spawnPoints[i].Orientation
                );

            orbitCamera.SetInputController(inputControllers[i]);
            orbitCamera.GetCamera().rect = viewRects[i];

            PlayerHudScript hud = Instantiate(
                hudPrefab,
                hudCanvas.transform
                );

            hud.viewportRect = viewRects[i];
            hud.Rebuild();

            players[i] = Instantiate(playerPrefab);

            // Get controller, camera, hud, random color, etc
            players[i].Initialize(
                new PlayerHandle(i),
                orbitCamera,
                inputControllers[i],
                playerColors [i],
                hud
                );

            players[i].Spawn(spawnPoints[i].Position, spawnPoints[i].Forward);
        }

        musicManager.PlayStart();


        judge       = new Judge(players, rules, StartPlayerWinRoutine);
        judge.rules = configuration.rules;
        GameStart();
    }
Beispiel #2
0
    // Set mandatory values to playercontroller
    public void Initialize(
        PlayerHandle handle,
        OrbitCameraTP cameraRig,
        IInputController input,
        Color color,
        PlayerHudScript hud
        )
    {
        this.handle = handle;
        this.hud    = hud;
        this.input  = input;

        this.cameraRig   = cameraRig;
        cameraRig.anchor = transform;

        // Color clear designates no change
        if (color != Color.clear)
        {
            characterRenderer.material.color = color;
        }

        // Initialize health systems
        hitpoints = maxHitpoints;
        damageController.TakeDamage.AddListener((damage) => Hurt((int)damage));
        hud.SetHp(maxHitpoints);

        // Subscribe input events
        input.Fire          += Fire;
        input.Jump          += ragdoll.Jump;
        input.PickUp        += ToggleCarryGun;
        input.ToggleRagdoll += ToggleRagdoll;

        // These should be default values on instantiate instead of explicitly
        // setting them here
        UnSpawn();
    }