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; };
        }
示例#2
0
            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"));
            }
示例#3
0
        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
        }
示例#4
0
        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;
                    }
                }
            };
        }
示例#5
0
        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;
        }
示例#6
0
 /// <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));
            //}
        }