private void Start() { sMinioninfo = GetComponent <SiegeMinionInfo>(); attackTrigger.CreateTrigger(sMinioninfo.AgroRange); attackTrigger.TriggerEnter += AttackTriggerEnter; attackTrigger.TriggerExit += AttackTriggerExit; targets = new List <Transform>(); movement = GetComponent <MinionMovement>(); weaponDetails = weapon.GetComponentInChildren <BcWeapon>(); if (EnemyAIManager.upgradeSiege) { weaponDetails.reloadTime = sMinioninfo.reloadTime * 0.85f; weaponDetails.clipSize = sMinioninfo.clipSize * 2; weaponDetails.rateOfFire = sMinioninfo.AttackSpeed * 1.2f; weaponDetails.bulletsPerShot = sMinioninfo.bulletsPerShot + 2; weaponDetails.SiegeProjectileDamage = sMinioninfo.Damage * 1.5f; GetComponent <UnityEngine.AI.NavMeshAgent>().speed = sMinioninfo.MovementSpeed * 1.8f; } else { weaponDetails.reloadTime = sMinioninfo.reloadTime; weaponDetails.clipSize = sMinioninfo.clipSize; weaponDetails.rateOfFire = sMinioninfo.AttackSpeed; weaponDetails.bulletsPerShot = sMinioninfo.bulletsPerShot; weaponDetails.SiegeProjectileDamage = sMinioninfo.Damage; } weaponDetails.currentAmmo = 0.0f; }
private void OnSceneGUI() { Vector3 offset, vec; BcWeapon tW = (BcWeapon)target; if (tW.enabled) { test = this.serializedObject.FindProperty("test"); bulletPrefab = this.serializedObject.FindProperty("bulletPrefab"); horizontalSpread = this.serializedObject.FindProperty("horizontalSpread"); verticalSpread = this.serializedObject.FindProperty("verticalSpread"); displayOffset = this.serializedObject.FindProperty("displayOffset"); bulletAcceleration = this.serializedObject.FindProperty("bulletAcceleration"); bulletSpeed = this.serializedObject.FindProperty("bulletSpeed"); bulletSpeedDelta = this.serializedObject.FindProperty("bulletSpeedDelta"); bulletLife = this.serializedObject.FindProperty("bulletLife"); rateOfFire = this.serializedObject.FindProperty("rateOfFire"); clipSize = this.serializedObject.FindProperty("clipSize"); displayScale = this.serializedObject.FindProperty("displayScale"); bulletsPerShot = this.serializedObject.FindProperty("bulletsPerShot"); showDisplayHandles = this.serializedObject.FindProperty("showDisplayHandles"); bulletGlobalAcceleration = this.serializedObject.FindProperty( "bulletGlobalAcceleration"); reloadTime = this.serializedObject.FindProperty("reloadTime"); gizmosFlag = this.serializedObject.FindProperty("gizmosFlag"); isSemiAutomatic = this.serializedObject.FindProperty("isSemiAutomatic"); shootSound = this.serializedObject.FindProperty("shootSound"); reloadingSound = this.serializedObject.FindProperty("reloadingSound"); reloadedSound = this.serializedObject.FindProperty("reloadedSound"); emptyClickSound = this.serializedObject.FindProperty("emptyClickSound"); if (showDisplayHandles.boolValue) { offset = tW.transform.position; vec = -offset + Handles.PositionHandle(offset + tW.DisplayOffsetF, tW.transform. rotation); displayOffset.vector3Value = tW.transform.worldToLocalMatrix.MultiplyVector(vec); displayScale.floatValue = Mathf.Max(0.1f, Handles.ScaleSlider(displayScale. floatValue, offset + tW.DisplayOffsetF, -tW.transform.up, tW.transform.rotation, 0.75f * HandleUtility.GetHandleSize(offset + tW.DisplayOffsetF), 0.0f)); } Handles.color = Color.white; offset = tW.DisplayPosition + tW.transform.up * (displayScale.floatValue * 0.5f) + tW. transform.forward * (0.5f * displayScale.floatValue); vec = Handles.Slider(offset + tW.transform.forward * (tW.clipSize * displayScale. floatValue / rateOfFire.floatValue), tW.transform.forward, 0.75f * displayScale. floatValue, Handles.ConeHandleCap, 0.0f) - offset; rateOfFire.floatValue = tW.clipSize * (displayScale.floatValue / vec.magnitude); Handles.color = Color.white; offset = tW.DisplayPosition - tW.transform.up * (displayScale.floatValue * 0.5f) + tW. transform.forward * (0.75f * displayScale.floatValue); vec = Handles.Slider(offset + tW.transform.forward * (tW.clipSize * displayScale. floatValue / tW.rateOfFire), tW.transform.forward, 0.75f * displayScale.floatValue, Handles.SphereHandleCap, 0.0f) - offset; offset = tW.DisplayPosition - tW.transform.up * (displayScale.floatValue * 0.5f) + tW. transform.forward * (0.5f * displayScale.floatValue); vec = Handles.Slider(offset + tW.transform.forward * (tW.clipSize * displayScale. floatValue / tW.rateOfFire), tW.transform.forward, 0.75f * displayScale.floatValue, Handles.CylinderHandleCap, 0.0f) - offset; clipSize.intValue = Mathf.RoundToInt(tW.rateOfFire * vec.magnitude / displayScale. floatValue); Handles.color = Color.gray; offset = tW.DisplayPosition + tW.transform.up * (displayScale.floatValue * 0.5f) - tW. transform.forward * (0.5f * displayScale.floatValue); vec = Handles.Slider(offset - tW.transform.forward * (tW.reloadTime * displayScale. floatValue), -tW.transform.forward, 0.75f * displayScale.floatValue, Handles. ConeHandleCap, 0.0f) - offset; reloadTime.floatValue = vec.magnitude / displayScale.floatValue; this.serializedObject.ApplyModifiedProperties(); Handles.color = Color.white; Vector3 position = tW.ShotEnd(tW.bulletSpeed * tW.transform.forward, tW.bulletLife, Color.white); Handles.Label(position, Mathf.Round(100.0f * tW.bulletLife) * 0.01f + " secs" + " | " + Mathf.Round(100.0f * Vector3.Distance(tW.transform.position, position)) * 0.01f + " m"); } }