コード例 #1
0
ファイル: ShipControl.cs プロジェクト: GuochuSang/OrbitII
        public void RemoveWeapon(IShipWeapon weapon)
        {
            ShipWeaponGroup group = WeaponGroups.Find((WeaponGroup) => WeaponGroup.num == weapon.GetDefaultOperation());

            group.shipWeapons.Remove(weapon);
            if (group.shipWeapons.Count == 0)
            {
                WeaponGroups.Remove(group);
            }
        }
コード例 #2
0
ファイル: ShipControl.cs プロジェクト: GuochuSang/OrbitII
        public void AddWeapon(IShipWeapon weapon)
        {
            ShipWeaponGroup group = WeaponGroups.Find((WeaponGroup) => WeaponGroup.num == weapon.GetDefaultOperation());

            if (group == null)
            {
                group = new ShipWeaponGroup();
                WeaponGroups.Add(group);
                if (WeaponGroups.Count == 1)
                {
                    currentWeaponIndex = WeaponGroups[0];
                }
                group.shipWeapons.Add(weapon);
                group.num           = weapon.GetDefaultOperation();
                group.operationMode = weapon.GetOperationMode();
            }
            else
            {
                group.shipWeapons.Add(weapon);
            }
        }
コード例 #3
0
ファイル: ShipControl.cs プロジェクト: GuochuSang/OrbitII
        private void Update()
        {
            #region 飞船控制状态机
            float v = 0, h = 0, t = 0;            //各自由度引擎功率
            if (!SpColding)
            {
                if (mode == ShipControlMode.Player)                 //手控模式
                {
                    #region 飞船形体控制

                    v = Input.GetAxis("Vertical");
                    h = Input.GetAxis("Horizontal");
                    t = Input.GetAxis("Torque");
                    if (Input.GetButtonDown("Dash"))
                    {
                        dashTimer = dashTime;
                    }

                    //紧急回避代码
                    if (dashTimer > 0)
                    {
                        dashTimer -= Time.fixedDeltaTime;
                        v         *= dashRate;
                        h         *= dashRate;
                    }

                    #endregion
                    #region 武器处理
                    //武器选择
                    foreach (var weaponGroup in WeaponGroups)
                    {
                        if (Input.GetButtonDown(NumToButton.NumToKey(weaponGroup.num)))
                        {
                            currentWeaponIndex = WeaponGroups.Find((ShipWeaponGroup g) => g.num == weaponGroup.num);
                        }
                    }
                    //武器使用
                    if (currentWeaponIndex != null)
                    {
                        if (WeaponGroups.Count > 0 && currentWeaponIndex.operationMode == ShipWeaponDefaultOperationMode.Impulse)
                        {
                            if (Input.GetButtonDown("Fire1"))
                            {
                                foreach (var weapon in currentWeaponIndex.shipWeapons)
                                {
                                    weapon.WeaponWork();
                                }
                            }

                            if (Input.GetButtonDown("Fire2"))
                            {
                                foreach (var weapon in currentWeaponIndex.shipWeapons)
                                {
                                    weapon.WeaponSkill();
                                }
                            }
                        }
                        if (WeaponGroups.Count > 0 && currentWeaponIndex.operationMode == ShipWeaponDefaultOperationMode.Continuous)
                        {
                            if (Input.GetButton("Fire1"))
                            {
                                foreach (var weapon in currentWeaponIndex.shipWeapons)
                                {
                                    weapon.WeaponWork();
                                }
                            }

                            if (Input.GetButton("Fire2"))
                            {
                                foreach (var weapon in currentWeaponIndex.shipWeapons)
                                {
                                    weapon.WeaponSkill();
                                }
                            }
                        }
                    }
                    #endregion
                }
            }
            #endregion
            #region 引擎处理
            /*****************************************************************/
            if (v == 0)
            {
                VM = 0;
            }
            else
            {
                VM = (int)Mathf.Sign(v);
            }
            //**************************
            if (h == 0)
            {
                HM = 0;
            }
            else
            {
                HM = (int)Mathf.Sign(h);
            }
            //**************************
            if (t == 0)
            {
                TM = 0;
            }
            else
            {
                TM = (int)Mathf.Sign(t);
            }
            //**************************
            for (int i = VT.Count - 1; i > -1; i--)
            {
                if (VT[i] == null)
                {
                    VT.RemoveAt(i);
                    continue;
                }
                VT[i].SetWorkState(v, t);
                Sp -= VT[i].GetSPConsume() * Time.deltaTime;
            }
            for (int i = HT.Count - 1; i > -1; i--)
            {
                if (HT[i] == null)
                {
                    HT.RemoveAt(i);
                    continue;
                }
                HT[i].SetWorkState(h, t);
                Sp -= HT[i].GetSPConsume() * Time.deltaTime;
            }
            #endregion
            #region SP处理

            if (SpColding == false && Sp == 0)
            {
                SpColding = true;
                if (currentWeaponIndex != null && WeaponGroups.Count > 0)
                {
                    foreach (var weapon in currentWeaponIndex.shipWeapons)
                    {
                        weapon.End();
                    }
                }
            }

            if (SpColding == true && Sp / MaxSP > SpOutColdingRate)
            {
                SpColding = false;
            }
            Sp += SpRecoverSpeed * Time.deltaTime;
            #endregion
            #region 武器取消
            if (currentWeaponIndex != null && WeaponGroups.Count > 0)
            {
                if (Input.GetButtonUp("Fire1") || Input.GetButtonUp("Fire2"))
                {
                    foreach (var weapon in currentWeaponIndex.shipWeapons)
                    {
                        weapon.End();
                    }
                }
            }
            #endregion
            #region 镜头
            float deltaScroll = Input.GetAxis("Mouse ScrollWheel");
            if (!deltaScroll.Equals(0f))
            {
                CameraController.Instance.DefaultFreeSize -= Input.GetAxis("Mouse ScrollWheel") * 20;
                CameraController.Instance.SetSize(CameraController.Instance.DefaultFreeSize);
            }
            #endregion
        }