示例#1
0
    public void PushLeft()
    {
        if (m_player.hasLightBulb)
        {
            Node EnemyNode = m_board.FindNodeAt(transform.position);

            if (m_board.playerNode.transform.position.z == EnemyNode.transform.position.z && Vector3.Distance(EnemyNode.transform.position, m_board.playerNode.transform.position) < 3f && m_board.playerNode.transform.position.x > EnemyNode.transform.position.x)
            {
                Debug.Log("MoveLeft");
                m_enemyMover.MoveLeft();

                m_enemyMover.destination = m_player.transform.position;
                m_enemyMover.FaceDestination();
                m_player.clearPlayerPath();
                m_enemyMover.firstChaserMove = false;
            }
        }
    }
示例#2
0
    IEnumerator PickRockRoutine()
    {
        CancelInvoke("ChangeDir");
        Vector3 posRock = transform.position;
        Vector3 mid     = transform.position;

        mid.y += 2f;
        switch (pos)
        {
        case Position.N:
            posRock.z += 4f;
            mid.z     += 2f;
            break;

        case Position.E:
            posRock.x += 4f;
            mid.x     += 2f;
            break;

        case Position.S:
            posRock.z -= 4f;
            mid.z     -= 2f;
            break;

        case Position.W:
            posRock.x -= 4f;
            mid.x     -= 2f;
            break;
        }
        Vector3 heigh = new Vector3(0f, 1f, 0f);

        Vector3[] path = { transform.position + heigh, mid, posRock };
        ThrowRock(path);
        Destroy(_arrow);
        yield return(new WaitForSeconds(delay));

        activateActivableEvent.Invoke();
        Node nodeDest = _board.FindNodeAt(posRock);

        if (nodeDest != null)
        {
            EnemyManager[] enemies = Object.FindObjectsOfType <EnemyManager>() as EnemyManager[];
            rockAudio.Play();

            foreach (EnemyManager enemy in enemies)
            {
                EnemyMover mover = enemy.GetComponent <EnemyMover>();

                if (mover.CurrentNode == nodeDest)
                {
                    enemy.Die();
                }
                else if (!enemy.IsDead)
                {
                    List <Node> neighs      = mover.CurrentNode.FindNeighbors(_board.AllNodes);
                    Node        nearestNode = FindNearestNode(neighs, nodeDest, mover.CurrentNode);
                    mover.destination = nearestNode.transform.position;
                    mover.FaceDestination();
                }
            }
            _player.playerMover.hasMoved = false;
            yield return(new WaitForSeconds(1f));
        }
    }