コード例 #1
0
    // Use this for initialization
    void Start()
    {
        speech = FindObjectOfType <RecoSpeechManager>(); //SLOW AF
        Debug.Log("Found script: " + speech.name);

        targetMove = target.GetComponent <TargetMove>();
        gameState  = gameManager.GetComponent <DodgeballGameState>();
    }
コード例 #2
0
 // set tower related values
 public void SetTower(float _DamagePerSecond, float _DamagePerShot, float _Range, float _AttackSpeed, DamageType _eDamageType, TargetMove _eTagetType)
 {
     DamagePerSecond = _DamagePerSecond;
     DamagePerShot   = _DamagePerShot;
     Range           = _Range;
     AttackSpeed     = _AttackSpeed;
     eDamageType     = _eDamageType;
     eTagetType      = _eTagetType;
 }
コード例 #3
0
        protected override void OnUpdate(ref UpdateParams p)
        {
            base.OnUpdate(ref p);

            if (TargetMove.LengthSquared() > 0)
            {
                if (CollidesWhenThisMoves(Level.Current.pixie, TargetMove))
                {
                    if (Level.Current.Subtitles.Children.Count <= 2)
                    {
                        Level.Current.Subtitles.Show(3, "HALT! Thou shalt\n   not pass.", 3.5f);
                    }
                }
            }
        }
コード例 #4
0
        protected override void OnUpdate(ref UpdateParams p)
        {
            base.OnUpdate(ref p);

            if (!IsExploding && TargetMove.LengthSquared() > 0)
            {
                if (CollidesWithSomething(TargetMove))
                {
                    // EXPLODE !!!
                    StartExplode();
                }
            }

            if (IsExploding)
            {
                OnExploding();
            }
        }
コード例 #5
0
        protected override void OnUpdate(ref UpdateParams p)
        {
            base.OnUpdate(ref p);

            if (TargetMove.LengthSquared() > 0)
            {
                if (CollidesWhenThisMoves(Level.Current.hero, TargetMove))
                {
                    if (Level.Current.Subtitles.Children.Count <= 4 && Level.Current.hero.Health > 0f)
                    {
                        Level.Current.Sound.PlayRandomCombatSound(0.2f, 0.3f);
                        Level.Current.Subtitles.Show(3, "(Red:) " + attackString[RandomMath.RandomIntBetween(0, attackString.Length - 1)], 3.5f, Color.IndianRed);
                        var damage = RandomMath.RandomBetween(MinDamage, MaxDamage);
                        HurtBehavior.Apply(Level.Current.hero, damage, MaxDamage);
                        Level.Current.hero.Health -= damage;
                    }
                }
            }
        }
コード例 #6
0
    public static void Reset()
    {
        WMeleeAttack        = 0;
        WMortarAttack       = 0;
        WMortarHits         = 0;
        WMortarPrecision    = 0f;
        WMortarDamagePerHit = 0f;
        WMortarDamage       = 0f;
        WApproach           = 0;
        WRifleAttack        = 0f;
        WRifleHits          = 0f;
        WAngleTowards       = 0f;
        WTurretAngleTowards = 0f;
        WRiflePrecision     = 0f;
        DistanceToKeep      = 0f;
        MultipleTargets     = false;

        TargetMoveStrategy = TargetMove.Stationary;
        Name = "Test";
    }
コード例 #7
0
 protected override void OnCreate()
 {
     leader = GameObject.FindObjectOfType(typeof(TargetMove)) as TargetMove;
 }
コード例 #8
0
        protected override void OnUpdate(ref UpdateParams p)
        {
            base.OnUpdate(ref p);

            // keep previous loop's control input
            Vector2 ctrl = Vector2.Zero;
            ctrlPrev = ctrlCur;
            KeyboardState kb = Keyboard.GetState();
            GamePadState gp = GamePad.GetState(PlayerIndex.One);
            Vector2 sticks = Vector2.Zero;
            const float AST = 0.1f; // AST = Analog Stick Threshold
            if (gp.IsConnected)
                sticks = gp.ThumbSticks.Left + gp.ThumbSticks.Right;            

            if (kb.IsKeyDown(Keys.Up) || kb.IsKeyDown(Keys.W) || gp.IsButtonDown(Buttons.DPadUp)
                || (sticks.Y > AST && sticks.Y >= sticks.X) )
                    ctrl.Y += -1.0f;                
            if (kb.IsKeyDown(Keys.Down) || kb.IsKeyDown(Keys.S) || gp.IsButtonDown(Buttons.DPadDown)
                || (sticks.Y < -AST && sticks.Y <= sticks.X) )
                    ctrl.Y += 1.0f;
            if (kb.IsKeyDown(Keys.Left) || kb.IsKeyDown(Keys.A) || gp.IsButtonDown(Buttons.DPadLeft)
                || (sticks.X < -AST && sticks.X <= sticks.Y) )
                    ctrl.X += -1.0f;
            if (kb.IsKeyDown(Keys.Right) || kb.IsKeyDown(Keys.D) || gp.IsButtonDown(Buttons.DPadRight)
                || (sticks.X > AST && sticks.X >= sticks.Y) )
                    ctrl.X += 1.0f;

            // handle case where 2nd key pressed Left/Right or Up/Down
            if (IsDiag(ctrl) && ctrl.Y == ctrlPrevDifferent.Y )
                ctrl.Y = 0f;
            if (IsDiag(ctrl) && ctrl.X == ctrlPrevDifferent.X)
                ctrl.X = 0f;

            // test for diagonal input!
            if (IsDiag(ctrl))
            {
                ctrl -= ctrlPrevDifferent; // try to compensate - only new key mvt
                if (IsDiag(ctrl))
                {
                    // if still diagonal, use X dir only.
                    ctrl.Y = 0f;
                }
            }

            // transfer found control input of user input persistent var
            ctrlCur = ctrl;

            if (ctrlCur != ctrlPrev)
            {
                ctrlPrevDifferent = ctrlPrev; // keep track of 'previous control that was different'
            }

            if (ctrl.X != 0f || ctrl.Y != 0f)
            {
                if (pressTime == 0f)
                    TargetMove = ctrlCur;
                pressTime += p.Dt;  // keep amount of time a direction input has been given
            }

            // reset key repeat counter if nothing given as input
            if (ctrl.LengthSquared() == 0f)
            {
                pressTime = 0f;
            }

            // trigger attack
            wasAttackPressed = isAttackPressed; // keep old but pres state
            isAttackPressed = kb.IsKeyDown(Keys.Space) || gp.IsButtonDown(Buttons.A) || kb.IsKeyDown(Keys.RightControl)
                || gp.IsButtonDown(Buttons.RightTrigger);
            if (isAttackPressed && !wasAttackPressed)
            {
                pixie.LeadAttack();
            }

            // help msg
            if (kb.IsKeyDown(Keys.Q) || kb.IsKeyDown(Keys.F1)
                || kb.IsKeyDown(Keys.P) || kb.IsKeyDown(Keys.Enter) || gp.IsButtonDown(Buttons.Start) )
            {
                ShowKeysHelp();
            }

            // inventory msg
            if (kb.IsKeyDown(Keys.I) || gp.IsButtonDown(Buttons.B))
            {
                Level.Current.hero.ShowInventory();
            }

            // trigger Toy / magic item
            bool isTriggerKeyPressed = kb.IsKeyDown(Keys.X) || gp.IsButtonDown(Buttons.Y);
            Toy t = ParentThing.ToyActive; 
            if (!isUseToyPressed && isTriggerKeyPressed)
            {
                isUseToyPressed = true;

                // use toy                
                if (t != null && (!t.IsUsed && t.UsesLeft > 0))
                {
                    t.StartUsing();
                    if (t.IsUsed && t.UsesLeft <= 0)
                        ParentThing.ToyActive = null; // remove toy from inventory once used up.
                }
                else
                {
                    ShowNoToyString();
                }
            }
            else if (!isTriggerKeyPressed)
            {
                isUseToyPressed = false;
            }

            // send trigger state to Toy
            if (t != null)
            {
                t.IsTriggered = isTriggerKeyPressed;
            }

            // key repetition
            if (pressTime > 0.2f / ParentThing.Velocity ) 
                pressTime = 0f;

            // make user's requested motion vector            
            if (TargetMove.LengthSquared() > 0f)
                IsTargetMoveDefined = true;

        }