private void OnTriggerExit(Collider other) { if (layerToDetect.value == (layerToDetect.value | (1 << other.gameObject.layer))) { switch (thisHitDetectType) { case HitDetectType.GivesDamage: overlapping = false; overlapper = null; break; case HitDetectType.TakesDamage: break; case HitDetectType.AlertsEnemy: parent.Alert(); break; case HitDetectType.ForgetEnemy: parent.Forget(); break; case HitDetectType.SetCheckpoint: break; default: break; } } }
public void buttonPressed(KeyCode k, float time, HitDetect hd) { if (song != null && song.hitMap.ContainsKey(k) && lastCheck[k] < song.hitMap[k].Length) { float offTiming = (time - startTime) - song.hitMap[k][lastCheck[k]]; Debug.Log(offTiming + " " + song.hitMap[k][lastCheck[k]]); if (offTiming >= 0) { //get closest on the left for (int i = lastCheck[k]; i < song.hitMap[k].Length; i++) { float lastTime = song.hitMap[k][i]; //if shorter, use that one if ((time - startTime) - lastTime < offTiming && (time - startTime) - lastTime >= 0) { offTiming = (time - startTime) - lastTime; } //found shortest, make next one as start to check else { break; } } } //if in range if (Mathf.Abs(offTiming) <= 1f) { hd.gameObject.GetComponent <SpriteRenderer>().sprite = hd.spriteA; lastCheck[k] = lastCheck[k] + 1; if (Mathf.Abs(offTiming) <= 0.33) { score += 500; scoreText.gameObject.GetComponent <Text>().text = score.ToString(); Debug.Log("500 note at " + song.hitMap[k][lastCheck[k]]); //hd.gameObject.GetComponent<SpriteRenderer>().color = Color.green; } else if (Mathf.Abs(offTiming) <= 0.66) { score += 250; scoreText.gameObject.GetComponent <Text>().text = score.ToString(); Debug.Log("250 note at " + song.hitMap[k][lastCheck[k]]); hd.gameObject.GetComponent <SpriteRenderer>().color = Color.cyan; } else { Debug.Log("MISSED note at " + song.hitMap[k][lastCheck[k]]); hd.gameObject.GetComponent <SpriteRenderer>().color = Color.red; } } //if miss late, move to next one else if (offTiming > 0) { lastCheck[k] = lastCheck[k] + 1; } } }
public virtual void Start() { player = GameObject.Find("Player").GetComponent <Player>(); if (player == null) { Debug.LogError("No Player!"); } Health = MaxHealth; rb = GetComponent <Rigidbody>(); thisHitDetect = GetComponent <HitDetect>(); thisHitDetect.isActive = true; Health = MaxHealth; }
private void OnTriggerEnter(Collider other) { if (layerToDetect.value == (layerToDetect.value | (1 << other.gameObject.layer))) { Vector3 forcehit = new Vector3(); if (other.transform.position.x > transform.position.x) { forcehit.x = force.x; forcehit.y = force.y; forcehit.z = force.z; } else { forcehit.x = -force.x; forcehit.y = force.y; forcehit.z = force.z; } //Debug.Log("Switch type = " + thisHitDetectType + "parent is " + parent.name); switch (thisHitDetectType) { case HitDetectType.GivesDamage: overlapper = other.gameObject.GetComponent <HitDetect>(); if (alwaysDoDamage) { overlapper.AlwaysDoDamageToParent(damage, forcehit); } else { if (isActive) { overlapper.DoDamageToParent(damage, forcehit); } } overlapping = true; Debug.Log("hit " + damage + " " + other.gameObject.GetComponent <Character>().Health); break; case HitDetectType.TakesDamage: break; case HitDetectType.AlertsEnemy: parent.Alert(); break; case HitDetectType.ForgetEnemy: break; case HitDetectType.SetCheckpoint: other.gameObject.GetComponent <Player>().SetNewCheckpoint(transform.position); break; default: break; } } }