示例#1
0
    private void FixedUpdate()
    {
        if (movingPlayer)
        {
            Vector2  direction2D;
            Animator animator;

            for (int i = 0; i < playersNumber; i++)
            {
                if (players[i] != null)
                {
                    if (!checkpointReached[i])
                    {
                        if (players[i] == myPlayer)
                        {
                            Vector3 directionToCheckpoint = (positionCheckpoints[i].transform.position - players[i].transform.position).normalized;

                            direction2D = new Vector2(directionToCheckpoint.x, directionToCheckpoint.y);
                            players[i].GetComponent <PlayerControllerMap>().Move(directionToCheckpoint);

                            animator = players[i].GetComponent <Animator>();
                            animator.SetFloat("Speed", direction2D.SqrMagnitude());
                            animator.SetFloat("Horizontal", direction2D.x);
                        }
                    }
                }
                else
                {
                    checkpointReached[i] = true;
                }
            }

            if (checkpointReached.All(x => x))
            {
                if (!finalBoss)
                {
                    direction2D = Vector2.up;

                    myPlayer.GetComponent <PlayerControllerMap>().Move(Vector3.up);
                    Debug.Log(myPlayer);
                    Debug.Log(myPlayer.GetComponent <PhotonView>().ViewID);
                    animator = myPlayer.GetComponent <Animator>();
                    animator.SetFloat("Speed", direction2D.SqrMagnitude());
                    animator.SetFloat("Horizontal", direction2D.x);
                    if (myPlayer.transform.position.y >= finalPosition.position.y)
                    {
                        finalBoss = true;
                    }
                }
                else
                {
                    if (!finalCheckpointReached.All(x => x))
                    {
                        for (int i = 0; i < playersNumber; i++)
                        {
                            if (players[i] != null)
                            {
                                if (Vector3.Distance(players[i].transform.position, finalCheckpoints[i].transform.position) > 0.1f && !finalCheckpointReached[i])
                                {
                                    if (players[i] == myPlayer)
                                    {
                                        Vector3 directionToCheckpoint = (finalCheckpoints[i].transform.position - players[i].transform.position).normalized;

                                        direction2D = new Vector2(directionToCheckpoint.x, directionToCheckpoint.y);
                                        players[i].GetComponent <PlayerControllerMap>().Move(directionToCheckpoint);

                                        animator = players[i].GetComponent <Animator>();
                                        animator.SetFloat("Speed", direction2D.SqrMagnitude());
                                        animator.SetFloat("Horizontal", direction2D.x);
                                    }
                                }
                                else
                                {
                                    finalCheckpointReached[i] = true;
                                    if (players[i] == myPlayer)
                                    {
                                        animator = players[i].GetComponent <Animator>();
                                        animator.SetFloat("Speed", 0);
                                        animator.SetFloat("Horizontal", (boss.transform.position - players[i].transform.position).x);
                                    }
                                }
                            }
                        }
                    }

                    if (!setUpFinal)
                    {
                        boss.ActivateAnimator(this);
                        myPlayer.GetComponent <PlayerControllerMap>().SetTimer(999, true);
                        endgameVCAM.gameObject.SetActive(true);
                        setUpFinal = true;
                    }

                    if (isBossExploded)
                    {
                        direction2D = Vector2.up;
                        myPlayer.GetComponent <PlayerControllerMap>().SetTimer(0, false);
                        myPlayer.GetComponent <PlayerControllerMap>().Move(Vector3.up);
                        animator = myPlayer.GetComponent <Animator>();
                        animator.SetFloat("Speed", direction2D.SqrMagnitude());
                        animator.SetFloat("Horizontal", direction2D.x);
                    }
                }
            }
        }
    }