/// <summary> /// scale ball if it is inflatable ball /// </summary> protected override void scaleBall() { if (!m_CurrentProj) { m_ScaleBallMode = ScaleBallModes.None; return; } base.scaleBall(); }
/// <summary> /// create ball method /// </summary> protected override void createBall() { m_ScaleBallMode = ScaleBallModes.Scale; base.createBall(); }
/// <summary> /// shoot method /// </summary> protected void _shoot() { #if DEBUG_INFO if (!ProjectilePrefab) { Debug.LogError("ProjectilePrefab cannot be null." + " < " + this.ToString() + ">"); return; } #endif if (m_DisableShooting) { #if DEBUG_INFO Debug.LogWarning("WallShooter disabled: " + this.name); #endif return; } // shooting procedure m_CurrentShootTime += Time.deltaTime; if (m_CurrentShootTime >= shootInterval) { m_CurrentShootScaleTarget = Random.Range(InflatableBall.MinScale, InflatableBall.MaxScale); m_ScaleBallMode = ScaleBallModes.CreateBallProjectile; m_CurrentShootTime = 0.0f; } if (ProjectilePrefab is InflatableBall) { if (m_ScaleBallMode == ScaleBallModes.CreateBallProjectile) { createBall(); } else if (m_ScaleBallMode == ScaleBallModes.Scale) { float currentBallScale = (m_CurrentProj as InflatableBall).currentBallScale; scaleBall(); if (currentBallScale >= m_CurrentShootScaleTarget) { m_ScaleBallMode = ScaleBallModes.Release; } } else if (m_ScaleBallMode == ScaleBallModes.Release) { fireBall(); } } else { if (m_ScaleBallMode == ScaleBallModes.CreateBallProjectile) { createBall(); fireBall(); } } if (m_CurrentProj) { if (m_CurrentProj.State == Projectile.ProjectileStates.Ready) { m_CurrentProj.transform.position = FireTransform.position; } } }