Пример #1
0
    void OnTriggerStay2D(Collider2D col)
    {
        //If contact with jumper module
        if (col.CompareTag("JumperModule"))
        {
            JumperData jumperData = col.GetComponent <JumperData>();
            MoveAtoB   moveComp   = col.GetComponentInParent <MoveAtoB>();
            if (moveComp)
            {
                moveComp.enabled = false;
            }

            //If this is first contact with jumper
            if (!jumperData.Engaged)
            {
                jumperData.Engaged            = true;
                m_inputTouch.PlayerCurrentCol = col;
                m_inputTouch.PlayerLocked     = true;

                m_windController.updateWind();
                m_scoring.incrementScoreById(jumperData.ID, !m_grounded, jumperData.gameObject.transform.position);                             //If landing is perfect is the opposite of m_grounded when first touching the jumper

                if (m_grounded)
                {
                    SoundManager.Instance.playEngage();
                }
                else
                {
                    SoundManager.Instance.playPerfectEngage();
                }

                StartCoroutine(Freeze(col.gameObject));
                m_currentModuleEngaged = col.gameObject;
                GetComponent <Rigidbody2D>().velocity = Vector2.zero;
                GetComponent <PlayerDeath>().setKillerHeight(jumperData.ID - 1);
            }
            else if (!m_frozen && jumperData.Active)                    //If we are no longer frozen then jump according to jumper module
            {
                col.GetComponent <Collider2D>().enabled = false;
                m_grounded = false;                                             //Might not be needed
                GetComponent <Rigidbody2D>().velocity = Vector2.zero;
                GetComponent <Rigidbody2D>().AddForce(jumperData.JumpVec * m_jumpPower);
                m_animator.SetTrigger("jump");
                SoundManager.Instance.playJump();
            }

            //FIXME Faulty, good enough for now, make it linear or something..
            if (m_frozen)
            {
                transform.position = Vector2.Lerp(transform.position, col.transform.position, Time.deltaTime);                  //"Pull" player toward middle of jumper
            }
        }
    }
Пример #2
0
    //May spawn an enemy based on spawn rate
    //Enemy is positioned based on given position vector
    public void rollSpawner(Vector2 platformPos)
    {
        float rnd = Random.value;

        if (rnd > 0.65)
        {
            //Instantiate
            GameObject newEnemy = Instantiate(m_enemyPrefab, platformPos, Quaternion.identity) as GameObject;
            MoveAtoB   moveAtoB = newEnemy.GetComponent <MoveAtoB>();

            //Randomize and set attributes
            float radius        = Random.Range(1.5f, 3.5f);
            float movementSpeed = Random.Range(1f, 2.5f);
            moveAtoB.initialize(2, radius, movementSpeed);
        }
    }
Пример #3
0
    public void reInitialize()
    {
        StopCoroutine("Fade");

        Color color = GetComponent <Renderer>().material.color;

        color.a = 1;
        GetComponent <Renderer>().material.color = color;
        GetComponent <Collider2D>().enabled      = true;
        m_lineRenderer.enabled = false;
        m_lineRenderer.SetPosition(1, Vector2.zero);

        MoveAtoB moveAtoB = GetComponentInParent <MoveAtoB>();

        if (moveAtoB != null)
        {
            moveAtoB.reInitialize();
        }
    }
Пример #4
0
    public void OnSceneGUI()
    {
        serializedObject.Update();
        MoveAtoB platform = (MoveAtoB)target;
        Vector3  pointA   = platform.transform.TransformPoint(pointA_SP.vector3Value);

        Handles.color = Color.blue;

        Vector3 pointB = platform.transform.TransformPoint(pointB_SP.vector3Value);

        Handles.color = Color.blue;
        pointB        = Handles.FreeMoveHandle(
            pointB,
            Quaternion.identity,
            HandleUtility.GetHandleSize(pointB) * 0.08f,
            Vector3.one * 0.1f,
            Handles.DotCap);

        pointB_SP.vector3Value = platform.transform.InverseTransformPoint(pointB);
        Handles.DrawDottedLine(pointA, pointB, 20f);

        serializedObject.ApplyModifiedProperties();
    }