예제 #1
0
 private void Awake()
 {
     if (main == null)
     {
         main = this;
         ReassignDevices();
     }
 }
예제 #2
0
    private IEnumerator StartDuel()
    {
        yield return(new WaitForSeconds(delayTillCountdown));

        menuPanel.SetActive(false);
        countdownPanel.SetActive(true);

        foreach (var playerInput in FindObjectsOfType <PlayerInput>())
        {
            Destroy(playerInput);
        }

        var delayTime = new WaitForSeconds(countInterval);

        countdownAudioSource.Play();
        var countdownImageCount = countDownSprites.Length;

        for (int i = 0; i < countdownImageCount - 1; i++)
        {
            countdownImage.sprite = countDownSprites[i];
            yield return(delayTime);
        }

        countdownImage.sprite = countDownSprites[countdownImageCount - 1];
        countdownImage.rectTransform.sizeDelta = lastCountdownImageSize;
        yield return(delayTime);

        var inputModules = FindObjectsOfType <InputSystemUIInputModule>();

        for (var i = 0; i < _selectedCharacters.Length; i++)
        {
            var(character, instantiationParameters) = _selectedCharacters[i];

            _instantiatedCharacters[i] = new CinemachineTargetGroup.Target
            {
                target = Instantiate(character, instantiationParameters.Position, instantiationParameters.Rotation).transform,
                weight = 0.5f,
                radius = characterRadius
            };

            cinemachineTargetGroup.m_Targets = _instantiatedCharacters;
            character.GetComponent <PlayerInput>().uiInputModule = inputModules[i];
        }

        countdownPanel.SetActive(false);
        hudPanel.SetActive(true);
        _selectedCharacters = new Tuple <GameObject, InstantiationParameters> [2];

        PlayerInputDeviceManager.ReassignDevices();

        yield return(null);
    }