Esempio n. 1
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Enemy" && !hassleIsBlocked)
        {
            hassleIsBlocked = true;
            inHassle        = true;                                     // Запрет на стычки

            enemy                 = collision.gameObject;               // Получаем оппонента
            enemyRB               = enemy.GetComponent <Rigidbody2D>(); // Получаем RigidBody
            enemyRB.constraints   = RigidbodyConstraints2D.FreezeAll;   // Замораживаем врага
            enemyCollider         = enemy.GetComponent <Collider2D>();  // Получаем Collider
            enemyCollider.enabled = false;                              // Отключаем Collider

            playerRB.constraints   = RigidbodyConstraints2D.FreezeAll;  // Замораживаем игрока
            playerCollider.enabled = false;                             // Отключаем Collider

            playerPosition = player.transform.position;                 // Записываем координаты игрока
            enemyPosition  = enemy.transform.position;                  // Записываем координаты врага
            centerOfHassle = enemyPosition / 2 + playerPosition / 2;    // Находим центр стычки


            if (playerPosition.x > enemyPosition.x) // Расставляем объекты для стычки
            {
                player.transform.position = new Vector2(centerOfHassle.x + 0.5f, centerOfHassle.y);
                enemy.transform.position  = new Vector2(centerOfHassle.x - 0.5f, centerOfHassle.y);
            }
            else
            {
                player.transform.position = new Vector2(centerOfHassle.x - 0.5f, centerOfHassle.y);
                enemy.transform.position  = new Vector2(centerOfHassle.x + 0.5f, centerOfHassle.y);
            }

            hassleBar    = Instantiate(hassleBarLink, new Vector2(centerOfHassle.x, centerOfHassle.y + 1), Quaternion.identity); // Создание полосы стычки
            hassleStatus = hassleBar.GetComponent <HassleStatus>();                                                              // Получение скрипта полосы

            playerForce = 10;                                                                                                    // Задаются базовые парамметры для стычки
            enemyForce  = 10;
            hassleStatus.SetBalance(playerForce, enemyForce);                                                                    // Отрисовывается ползунок

            camera.transform.position   = new Vector3(centerOfHassle.x, centerOfHassle.y, camera.transform.position.z);          // Камера занимает позицию центра стычки
            cameraOriginalSize          = cameraSize.orthographicSize;                                                           // Запись предыдущего положения камеры
            cameraSize.orthographicSize = 3;                                                                                     // Приближает изображение

            InvokeRepeating("EnemyHit", 1, 0.2f);                                                                                // Включается автоклик у врага
            InvokeRepeating("Timer", 1, 1f);                                                                                     // Включается таймер на стычку
        }
    }
Esempio n. 2
0
    void Update()
    {
        if (inHassle)
        {
            if (Input.GetMouseButtonDown(0)) // Клик игрока
            {
                PlayerHit();
            }
            if (balanceIsChanged) // Отрисовка полосы
            {
                hassleStatus.SetBalance(playerForce, enemyForce);
                balanceIsChanged = false;
            }
            if (playerForce == 0 || enemyForce == 0 || time == 0) // Конец стычки
            {
                // Востановление параметров
                CancelInvoke("Timer");
                CancelInvoke("EnemyHit");
                playerRB.constraints   = RigidbodyConstraints2D.None;
                playerCollider.enabled = true;
                enemyRB.constraints    = RigidbodyConstraints2D.None;
                enemyCollider.enabled  = true;

                if (playerForce == 0) // Победа врага
                {
                    // ЗАМЕНИТЬ НА ПОБЕДУ ВРАГА
                    if (playerPosition.x > enemyPosition.x)
                    {
                        playerRB.AddForce(transform.right * impulseForce, ForceMode2D.Impulse);
                        enemyRB.AddForce(transform.right * -impulseForce, ForceMode2D.Impulse);
                    }
                    else
                    {
                        playerRB.AddForce(transform.right * -impulseForce, ForceMode2D.Impulse);
                        enemyRB.AddForce(transform.right * impulseForce, ForceMode2D.Impulse);
                    }
                    Debug.Log("Red win");
                }
                if (enemyForce == 0) // Победа игрока
                {
                    // ЗАМЕНИТЬ НА ПОБЕДУ ИГРОКА
                    if (playerPosition.x > enemyPosition.x)
                    {
                        playerRB.AddForce(transform.right * impulseForce, ForceMode2D.Impulse);
                        enemyRB.AddForce(transform.right * -impulseForce, ForceMode2D.Impulse);
                    }
                    else
                    {
                        playerRB.AddForce(transform.right * -impulseForce, ForceMode2D.Impulse);
                        enemyRB.AddForce(transform.right * impulseForce, ForceMode2D.Impulse);
                    }
                    Debug.Log("Blue win");
                }
                if (time == 0) // Ничья
                {
                    // ЗАМЕНИТЬ НА УРОН ОБЕИМ СТОРОНАМ
                    if (playerPosition.x > enemyPosition.x) // Расставляем объекты для стычки
                    {
                        playerRB.AddForce(transform.right * impulseForce, ForceMode2D.Impulse);
                        enemyRB.AddForce(transform.right * -impulseForce, ForceMode2D.Impulse);
                    }
                    else
                    {
                        playerRB.AddForce(transform.right * -impulseForce, ForceMode2D.Impulse);
                        enemyRB.AddForce(transform.right * impulseForce, ForceMode2D.Impulse);
                    }
                    Debug.Log("Draft");
                }

                // Востановление параметров
                Destroy(hassleBar);
                cameraSize.orthographicSize = cameraOriginalSize;
                balanceIsChanged            = false;
                inHassle = false;
                time     = 3;
                Invoke("UnblockHassle", 3);
            }
        }
    }
Esempio n. 3
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        //   if (!playerManager.PV.IsMine) return;
        //  if (collision.gameObject.tag == "Enemy" )
        if (collision.gameObject.tag == "Player" && !hassleIsBlocked)
        {
            Debug.Log("Столкнулись");
            if (collision.gameObject.GetComponent <PhotonView>().Owner.GetTeam() != PhotonNetwork.LocalPlayer.GetTeam())
            {
                // if (playerManager.PV.IsMine) {
                Debug.Log("Враги");
                hassleIsBlocked = true;
                inHassle        = true; // Запрет на стычки

                //                   enemy = collision.gameObject;                           // Получаем оппонента
                //                   enemyRB = enemy.GetComponent<Rigidbody2D>();            // Получаем RigidBody
                //                   enemyRB.constraints = RigidbodyConstraints2D.FreezeAll; // Замораживаем врага
                //                  enemyCollider = enemy.GetComponent<Collider2D>();       // Получаем Collider
                //                   enemyCollider.enabled = false;                          // Отключаем Collider
                enemyPosition = collision.transform.position;
                Debug.Log(enemyPosition);
                playerManager.rb.constraints      = RigidbodyConstraints2D.FreezeAll; // Замораживаем игрока
                playerManager.boxCollider.enabled = false;                            // Отключаем Collider
                //   playerManager.moveJoystick.MoveJoystickPointerUp();
                //   playerManager.shootJoystick.ShootJoystickPointerUp();
                // playerManager.PV.RPC("FreezePlayer", RpcTarget.AllBuffered, new object[] { RigidbodyConstraints2D.FreezeAll, false, true });
                //  playerManager.rb.isKinematic = true;

                playerPosition = transform.position;                     // Записываем координаты игрока
                //  enemyPosition = enemy.transform.position;               // Записываем координаты врага
                centerOfHassle = enemyPosition / 2 + playerPosition / 2; // Находим центр стычки


                if (playerPosition.x > enemyPosition.x)     // Расставляем объекты для стычки
                {
                    Debug.Log("Выше");
                    transform.position = new Vector2(centerOfHassle.x + 0.5f, centerOfHassle.y);
                    //  enemy.transform.position = new Vector2(centerOfHassle.x - 0.5f, centerOfHassle.y);
                }
                else
                {
                    Debug.Log("Ниже");
                    transform.position = new Vector2(centerOfHassle.x - 0.5f, centerOfHassle.y);
                    //   enemy.transform.position = new Vector2(centerOfHassle.x + 0.5f, centerOfHassle.y);
                }

                hassleStatus = Instantiate(hassleBarLink, new Vector2(centerOfHassle.x, centerOfHassle.y + 1), Quaternion.identity).GetComponent <HassleStatus>();    // Создание полосы стычки,получаем скрипт бара
                //hassleStatus = hassleBar.GetComponent<HassleStatus>(); // Получение скрипта полосы

                playerTouchCount = 10;                                                                                                // Задаются базовые парамметры для стычки
                enemyTouchCount  = 10;
                hassleStatus.SetBalance(playerTouchCount, enemyTouchCount);                                                           // Отрисовывается ползунок

                cameraObject.transform.position = new Vector3(centerOfHassle.x, centerOfHassle.y, cameraObject.transform.position.z); // Камера занимает позицию центра стычки
                cameraOriginalSize            = cameraObject.orthographicSize;                                                        // Запись предыдущего положения камеры
                originalOffset                = cameraFollow.offset;                                                                  // Запись предыдущего положения отступов камеры
                cameraObject.orthographicSize = 3;                                                                                    // Приближает изображение
                cameraFollow.offset           = offset;                                                                               // Меняем отступы у камеры,варавниваем положение
                InvokeRepeating("EnemyHit", 1, 0.2f);                                                                                 // Включается автоклик у врага
                InvokeRepeating("Timer", 1, 1f);                                                                                      // Включается таймер на стычку
            }
            //    }
        }
    }