コード例 #1
0
    public void selectNextCharacter()
    {
        //save old character params
        Vector3    playerPosition = playerController1.transform.position;
        Quaternion playerRotation = playerController1.transform.rotation;
        PlayerControllerAdvanced oldController = playerController1;
        Checkpoint lastCheckpoint  = oldController.lastCheckpoint;
        int        characterHP     = oldController.character.hpCurrent;
        int        oldplayerNumber = oldController.playerNumber;

        //load new characters and link to related objects
        GameObject newCharacter         = characterRoster.getNextCharacter();
        GameObject newCharacterInstance = Instantiate(newCharacter, playerPosition, playerRotation);

        playerController1 = newCharacterInstance.GetComponent <PlayerControllerAdvanced>();
        playerController1.character.playerUI  = oldController.character.playerUI;
        playerController1.lastCheckpoint      = lastCheckpoint;
        playerController1.character.hpCurrent = characterHP;
        playerController1.playerNumber        = oldController.playerNumber;
        player1UI.owner = playerController1;
        player1UI.init();
        followCam.target = newCharacterInstance.transform;

        //destroy old character and clean up
        Destroy(oldController.gameObject);
        if (spawnFX != null)
        {
            GameObject fxInstance = Instantiate(spawnFX, playerPosition, playerRotation);
        }
    }
コード例 #2
0
 void initPlayerUI(PlayerControllerAdvanced playerController)
 {
     if (playerController.playerNumber == 1 && playerController1 != null)
     {
         player1UI.owner = playerController;
         player1UI.init();
     }
     else if (playerController.playerNumber == 2 && playerController2 != null)
     {
         player2UI.owner = playerController;
         player2UI.init();
     }
 }
コード例 #3
0
 public void kill()
 {
     if (isPlayer)
     {
         PlayerControllerAdvanced pc = transform.GetComponent <PlayerControllerAdvanced>();
         spawnSplatterModel();
         //StartCoroutine(pc.respawn(2f));
         GameManagement.instance.StartCoroutine(GameManagement.instance.respawnCharacter(this));
     }
     else
     {
         spawnSplatterModel();
         Destroy(gameObject); //TODO
     }
 }
コード例 #4
0
    public IEnumerator respawnCharacter(Character oldCharacter)
    {
        oldCharacter.GetComponent <PlayerControllerAdvanced>().actionsBlocked = true;
        GameObject newCharacter = Instantiate(characterRoster.roster[characterRoster.rosterPointer]);

        playerController1 = newCharacter.GetComponent <PlayerControllerAdvanced>();
        newCharacter.GetComponent <PlayerControllerAdvanced>().actionsBlocked = true;
        newCharacter.transform.position = oldCharacter.gameObject.GetComponent <PlayerControllerAdvanced>().lastCheckpoint.transform.position;
        newCharacter.transform.rotation = oldCharacter.gameObject.GetComponent <PlayerControllerAdvanced>().lastCheckpoint.transform.rotation;
        newCharacter.GetComponent <PlayerControllerAdvanced>().playerNumber = oldCharacter.GetComponent <PlayerControllerAdvanced>().playerNumber;
        newCharacter.GetComponent <Character>().playerUI = oldCharacter.GetComponent <Character>().playerUI;
        player1UI.owner = newCharacter.GetComponent <PlayerControllerAdvanced>();
        player1UI.init();
        Destroy(oldCharacter.gameObject);
        yield return(new WaitForSeconds(respawnDelay));

        followCam.target = newCharacter.transform;
        newCharacter.GetComponent <PlayerControllerAdvanced>().actionsBlocked = false;
        initPlayerUI(newCharacter.GetComponent <PlayerControllerAdvanced>());
        yield return(null);
    }