// Update is called once per frame void FixedUpdate() { if (startTime >= 0) { startTime -= Time.deltaTime; transform.rotation = Turret.rotation; Direction = Turret.up; velocity = Direction.normalized; return; } if (Target == null || !Target.activeSelf) { Target = EnemyManagerScript.Instance.GetClosestEnemyInRange(transform.position, float.PositiveInfinity, EnemyTags); if (Target == null) { BlowUp(); } } var direction = Target.transform.position - transform.position; var angle = MathHelpers.Angle(direction, transform.up) * Time.deltaTime * Inertia * Mathf.Pow(velocity.sqrMagnitude, 0.5f); velocity = velocity.Rotate(angle); acceleration *= 0.95f; velocity += velocity * acceleration * Time.deltaTime; transform.position += (Vector3)velocity; transform.up = velocity; shadow.position = transform.position + (Vector3)ShadowOffset * (InitialAcceleration - acceleration) / InitialAcceleration; shadow.rotation = transform.rotation; }
void FixedUpdate() { if (segmentIndex >= path.NumSegments) { return; } if (t >= 1.0f) { segmentIndex++; if (segmentIndex >= path.NumSegments) { return; } RecomputeSegment(); } var tangent = t * t * v1 + t * v2 + v3; t = t + Time.deltaTime * Speed / tangent.magnitude; transform.position = Bezier.EvaluateCubic(A, B, C, D, t); transform.eulerAngles = new Vector3(0.0f, 0.0f, MathHelpers.Angle(tangent, Vector2.right)); // if (gameObject.layer == LayerMask.NameToLayer("enemy")) // EnemyManagerScript.Instance.UpdateEnemy(gameObject, path.NumSegments - segmentIndex - t); }
private void TurnToEnemy(Vector2 position) { var direction = position - (Vector2)transform.position; var angle = MathHelpers.Angle(direction, transform.up); transform.Rotate(0, 0, Mathf.Clamp(angle, -10, 10) * RotationSpeed * Time.deltaTime); }
// Update is called once per frame void FixedUpdate() { time -= Time.deltaTime; if (time < 0) { BlowUp(); } if (Target == null || !Target.activeSelf) { Target = EM.GetClosestEnemyInRange(transform.position, Range * 2, EnemyTags); if (Target == null) { BlowUp(); return; } } var direction = Target.transform.position - transform.position; var angle = MathHelpers.Angle(direction, transform.up) * Time.deltaTime * Inertia; velocity = velocity.Rotate(angle); transform.position += (Vector3)velocity * Time.deltaTime; transform.up = velocity; }
void Start() { enemyTags = Enemies.Select(e => e.tag).ToList(); var enemy = EnemyManagerScript.Instance.GetEnemyInRange(transform.position, float.PositiveInfinity, enemyTags); var angle = MathHelpers.Angle(enemy.transform.position - transform.position, transform.up); transform.eulerAngles = new Vector3(0, 0, angle); bulletPlaceholder = transform.Find("Rocket").gameObject; }
// Update is called once per frame void FixedUpdate() { if (Target == null || !Target.activeSelf) { Target = EM.GetClosestEnemyInRange(transform.position, float.PositiveInfinity, EnemyTags); if (Target == null) { BlowUp(); return; } } var direction = Target.transform.position - transform.position; var angle = MathHelpers.Angle(direction, transform.up) * Time.deltaTime * Inertia; velocity = velocity.Rotate(angle); velocity += (Vector2)direction.normalized * acceleration * Time.deltaTime; transform.position += (Vector3)velocity * Time.deltaTime; transform.up = velocity; }