public void Pop(Dart dart) { if (props.HasFlag(AntProperty.Camo) && !dart.props.HasFlag(DartProperty.Camo)) { return; } if (dart.props.HasFlag(DartProperty.Flame)) { effect = AntEffect.Flame; wetSystem.Stop(); flameSystem.Play(); } if (dart.props.HasFlag(DartProperty.Wet)) { effect = AntEffect.Wet; flameSystem.Stop(); wetSystem.Play(); dps = dart.dps; stick = dart.stick; } transform.position += dart.kb * (Vector3)(Vector2)dart.dir; Pop(dart.damage); dart.pierce--; }
private void FixedUpdate() { speedMul = effect == AntEffect.Wet ? 0.5f : 1f; dir = nextCheckpoint.position - transform.position; transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0, 0, Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg - 90), lerp); if (dir.sqrMagnitude <= speedMul * speedMul * speed * speed * GameManager.FixedDeltaTime * GameManager.FixedDeltaTime) { transform.position = nextCheckpoint.position; nextCheckIndex++; if (nextCheckIndex >= checkpoints.Length) { GameManager.Instance.Health -= (int)type; Destroy(gameObject); return; } nextCheckpoint = checkpoints[nextCheckIndex]; return; } if (stick <= 0) { effect &= ~AntEffect.Flame; effect &= ~AntEffect.Wet; wetSystem.Stop(); flameSystem.Stop(); } else { stick -= Time.deltaTime; } transform.position += speedMul * speed * dir.normalized * Time.deltaTime; }
public void Pop(Explosion dart) { if (dart.props.HasFlag(DartProperty.Rinse)) { props &= ~AntProperty.Camo; props &= ~AntProperty.Armor; UpdateType(); } if (props.HasFlag(AntProperty.Camo) && !dart.props.HasFlag(DartProperty.Camo)) { return; } if (dart.props.HasFlag(DartProperty.Flame)) { effect = AntEffect.Flame; wetSystem.Stop(); flameSystem.Play(); } if (dart.props.HasFlag(DartProperty.Wet)) { effect = AntEffect.Wet; flameSystem.Stop(); wetSystem.Play(); dps = dart.dps; stick = dart.stick; } Pop(dart.damage); dart.blast--; }