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 } } }
//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); } }
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(); } }
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(); }