protected override void OnAttack() { if (projectilePrefab != null) { ProjectionPattern pattern = customProjectionPattern; if (pattern == null) { if (_currentProjectionShape != projectionShape) { SetCurrentProjectionShape(); } pattern = _currentProjectionPattern; } Vector3 forwardDirection = CalculateAttackDirection(); float forwardAngle = CalculateAttackAngle(); int amountProjectiles = GetAmountOfProjectiles(); pattern.StartProjection(amountProjectiles); for (int i = 0; i < amountProjectiles; i++) { pattern.Project(CreateProjectile(), forwardDirection, forwardAngle, i); } pattern.EndProjection(); } }
protected override void OnDispose() { projectilePrefab = null; customProjectionPattern = null; _currentProjectionPattern = null; }
private void SetCurrentProjectionShape() { _currentProjectionShape = projectionShape; _currentProjectionPattern = (ProjectionPattern)_projectionPatterns[projectionShape]; }