private void Awake() { BB = (CanonBlock)GetComponent <BlockBehaviour>(); // Adding toggle box PredictCannon = BB.AddToggle("Predict Cannon", "PredictCannon", PredictCannonEnabled); PredictCannon.Toggled += (bool value) => { PredictCannonEnabled = value; }; ShowError = BB.AddToggle("Show Error", "ShowError", ShowErrorEnabled); ShowError.Toggled += (bool value) => { ShowErrorEnabled = value; }; }
public Bullet(CanonBlock canonBlock) { CB = canonBlock; bulletObject = Instantiate(CB.boltObject.gameObject); bulletObject.SetActive(false); rigidbody = bulletObject.GetComponent <Rigidbody>(); TrailRenderer = bulletObject.GetComponent <TrailRenderer>() ?? bulletObject.AddComponent <TrailRenderer>(); TrailRenderer.autodestruct = false; TrailRenderer.receiveShadows = false; TrailRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; TrailRenderer.startWidth = 0.5f * bulletObject.transform.localScale.magnitude; TrailRenderer.endWidth = 0.1f; TrailRenderer.material = new Material(Shader.Find("Particles/Additive")); }
public override void SafeAwake() { // Initialise some components and default values AS = BB.GetComponent <AudioSource>(); CB = BB.GetComponent <CanonBlock>(); bullet = new Bullet(CB); IntervalSlider = BB.AddSlider(LanguageManager.fireInterval, "Interval", Interval, intervalMin, 0.5f); IntervalSlider.ValueChanged += (float value) => { Interval = value; ChangedProperties(); }; RandomDelaySlider = BB.AddSlider(LanguageManager.randomDelay, "RandomDelay", RandomDelay, 0f, 0.5f); RandomDelaySlider.ValueChanged += (float value) => { RandomDelay = value; ChangedProperties(); }; KnockBackSpeedSlider = BB.AddSlider(LanguageManager.recoil, "KnockBackSpeed", KnockBackSpeedZeroOne, knockBackSpeedZeroOneMin, knockBackSpeedZeroOneMax); KnockBackSpeedSlider.ValueChanged += (float value) => { KnockBackSpeedZeroOne = value; ChangedProperties(); }; #region 子弹控件初始化 BullerCustomBulletToggle = BB.AddToggle(LanguageManager.customBullet, "Bullet", false); BullerCustomBulletToggle.Toggled += (bool value) => { BulletTrailToggle.DisplayInMapper = BulletTrailColorSlider.DisplayInMapper = BulletTrailLengthSlider.DisplayInMapper = BulletDragSlider.DisplayInMapper = BulletMassSlider.DisplayInMapper = BulletInheritSizeToggle.DisplayInMapper = bullet.Custom = value; ChangedProperties(); }; BulletInheritSizeToggle = BB.AddToggle(LanguageManager.inheritSize, "InheritSize", false); BulletInheritSizeToggle.Toggled += (bool value) => { bullet.InheritSize = value; ChangedProperties(); }; BulletMassSlider = BB.AddSlider(LanguageManager.bulletMass, "BulletMass", 2f, 0.1f, 2f); BulletMassSlider.ValueChanged += (float value) => { bullet.Mass = value; ChangedProperties(); }; BulletDragSlider = BB.AddSlider(LanguageManager.bulletDrag, "BulletDrag", 0.2f, 0.01f, 0.5f); BulletDragSlider.ValueChanged += (float value) => { bullet.Drag = value; ChangedProperties(); }; BulletTrailToggle = BB.AddToggle(LanguageManager.trail, "Trail", false); BulletTrailToggle.Toggled += (bool value) => { bullet.TrailEnable = BulletTrailColorSlider.DisplayInMapper = BulletTrailLengthSlider.DisplayInMapper = value; ChangedProperties(); }; BulletTrailLengthSlider = BB.AddSlider(LanguageManager.trailLength, "trail length", 1f, 0.2f, 2f); BulletTrailLengthSlider.ValueChanged += (float value) => { bullet.TrailLength = value; ChangedProperties(); }; BulletTrailColorSlider = BB.AddColourSlider(LanguageManager.trailColor, "trail color", Color.yellow, false); BulletTrailColorSlider.ValueChanged += (Color value) => { bullet.TrailColor = value; ChangedProperties(); }; #endregion #if DEBUG ConsoleController.ShowMessage("加农炮添加进阶属性"); #endif }
public override void SafeAwake() { CB = GetComponent <CanonBlock>(); IntervalSlider = /*BB.*/ AddSlider(LanguageManager.Instance.CurrentLanguage.FireInterval, "Interval", /*Interval*/ 0.25f, /*intervalMin*/ EnhanceMore ? 0f : 0.1f, 0.5f); RandomDelaySlider = /*BB.*/ AddSlider(LanguageManager.Instance.CurrentLanguage.RandomDelay, "RandomDelay", /*RandomDelay*/ 0.2f, 0f, 0.5f); KnockBackSpeedSlider = /*BB.*/ AddSlider(LanguageManager.Instance.CurrentLanguage.Recoil, "KnockBackSpeed", /*KnockBackSpeedZeroOne*/ 1f, /*knockBackSpeedZeroOneMin*/ EnhanceMore ? 0f : 0.25f, /*knockBackSpeedZeroOneMax*/ 1f); CB.StrengthSlider.ValueChanged += (value) => { if (!EnhanceMore && (StatMaster.isMP && Modding.Common.Player.GetAllPlayers().Count > 1)) { if (value > 20f) { KnockBackSpeedSlider.DisplayInMapper = false; KnockBackSpeedSlider.Value = 1f; } else { KnockBackSpeedSlider.DisplayInMapper = true; } } }; }
public override void SimulateUpdateAlways() { if (StatMaster.isClient) { return; } if (Key25.IsPressed && 自动索敌.IsActive) { currentLocking = MyTargetSelector(); LockingTimer = currentLocking ? 0 : -1; } //烧坏 if (HasBurnedOut && !StatMaster.GodTools.UnbreakableMode) { currentLocking = null; LockingTimer = -1; currentTarget = null; } if (自动索敌.IsActive) { return; } //鼠标瞄准模式 if (模式.Value == 1 && !聪明模式.IsActive) { AcquireTarget(Camera.main.ScreenPointToRay(Input.mousePosition)); } //按键瞄准模式 if (Key1.IsPressed && !HasBurnedOut && 模式.Value == 0) { AcquireTarget(Camera.main.ScreenPointToRay(Input.mousePosition)); } //按键瞄准模式-取消 if (Key2.IsPressed && 模式.Value == 0) { currentLocking = null; LockingTimer = -1; currentTarget = null; } //后坐力 if (VisualController == null) { return; } if (VisualController.Block == null) { return; } if (VisualController.Block.jointsToMe == null) { return; } foreach (Joint Jo in VisualController.Block.jointsToMe) { if (VisualController == null) { return; } if (VisualController.Block == null) { return; } if (VisualController.Block.jointsToMe == null) { return; } if (Jo.GetComponentInParent <CanonBlock>()) { CanonBlock cb = Jo.GetComponentInParent <CanonBlock>(); cb.knockbackSpeed = 8000 * ((100 - KnockBackStablizierAdjuster.Value) / 100); cb.randomDelay = 0.000001f; shoott = StatMaster.isMP ? shoott : Input.GetMouseButtonDown(0); if (FireOnMouseClick.IsActive && 模式.Value == 1 && shoott) { cb.Shoot(); } } } shoott = false; }
/// <summary> /// Creates a Block handler. /// </summary> /// <param name="bb">BlockBehaviour object.</param> public Cannon(BlockBehaviour bb) : base(bb) { cb = bb.GetComponent <CanonBlock>(); }
protected override void OnSimulateStart() { BB = GetComponent <BlockBehaviour>(); AS = BB.GetComponent <AudioSource>(); CB = BB.GetComponent <CanonBlock>(); BulletObject = CB.boltObject.gameObject; //BR = BulletObject.GetComponent<Rigidbody>(); //BulletSpeed = (CB.boltSpeed * Strength) / 15f; knockBackSpeed = KnockBackSpeed * (8000 + BulletMass * CB.boltSpeed * Strength / Time.fixedTime); CB.enabled = !cBullet; timer = Interval; //独立自定子弹 if (cBullet) { customBulletObject = (GameObject)Instantiate(BulletObject, CB.boltSpawnPos.position, CB.boltSpawnPos.rotation); customBulletObject.transform.localScale = !InheritSize ? new Vector3(0.5f, 0.5f, 0.5f) : Vector3.Scale(Vector3.one * Mathf.Min(transform.localScale.x, transform.localScale.z), new Vector3(0.5f, 0.5f, 0.5f)); customBulletObject.SetActive(false); BR = customBulletObject.GetComponent <Rigidbody>(); BR.mass = BulletMass; BR.drag = BR.angularDrag = Drag; } else { CB.randomDelay = RandomDelay; CB.knockbackSpeed = knockBackSpeed; } GameObject bullet = cBullet ? customBulletObject : BulletObject; if (Trail) { if (bullet.GetComponent <TrailRenderer>() == null) { myTrailRenderer = bullet.AddComponent <TrailRenderer>(); } else { myTrailRenderer = bullet.GetComponent <TrailRenderer>(); myTrailRenderer.enabled = Trail; } myTrailRenderer.autodestruct = false; myTrailRenderer.receiveShadows = false; myTrailRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; myTrailRenderer.startWidth = 0.5f * bullet.transform.localScale.magnitude; myTrailRenderer.endWidth = 0.1f; myTrailRenderer.time = TrailLength; myTrailRenderer.material = new Material(Shader.Find("Particles/Additive")); myTrailRenderer.material.SetColor("_TintColor", TrailColor); } else { myTrailRenderer = bullet.GetComponent <TrailRenderer>(); if (myTrailRenderer) { myTrailRenderer.enabled = Trail; } } //全局自定子弹 //CB.randomDelay = RandomDelay; //CB.knockbackSpeed = knockBackSpeed; //if (cBullet) //{ // BR.mass = BulletMass; // BR.drag = BR.angularDrag = Drag; // BulletObject.transform.localScale = !InheritSize ? new Vector3(0.5f, 0.5f, 0.5f) : Vector3.Scale(Vector3.one * Mathf.Min(transform.localScale.x, transform.localScale.z), new Vector3(0.5f, 0.5f, 0.5f)); //} }