コード例 #1
0
    private void CreateWalkForward(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("WalkForward");
        stateMachine.AddState(state);
        state.AddBehaviour(new MoveBehaviour(5f));
        state.AddBehaviour(new RotateBehaviour(75f));
        state.AddBehaviour(new PlayAnimationBehaviour("Run", 0.1f));

        transition = new Transition("Jump");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("Jump"));
        transition.AddCondition(new IsGroundedCondition());

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new VerticalAxisCondition(e => e == 0));

        transition = new Transition("Jump");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("Jump"));
        transition.AddCondition(new IsGroundedCondition());

        transition = new Transition("MeleeAttack");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("MeleeAttack"));

        transition = new Transition("RangeAttack");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("RangeAttack"));
    }
コード例 #2
0
    private void CreateRotateLeft(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("RotateLeft");
        stateMachine.AddState(state);
        state.AddBehaviour(new RotateBehaviour(100f));
        state.AddBehaviour(new PlayAnimationBehaviour("Rotate Left", 0.1f));

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new HorizontalAxisCondition(e => e == 0));

        transition = new Transition("WalkForward");
        state.AddTransition(transition);
        transition.AddCondition(new VerticalAxisCondition(e => e > 0));

        transition = new Transition("WalkBackward");
        state.AddTransition(transition);
        transition.AddCondition(new VerticalAxisCondition(e => e < 0));

        transition = new Transition("Jump");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("Jump"));
        transition.AddCondition(new IsGroundedCondition());

        transition = new Transition("MeleeAttack");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("MeleeAttack"));

        transition = new Transition("RangeAttack");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("RangeAttack"));
    }
コード例 #3
0
    private void CreateRotateRight(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("RotateRight");
        stateMachine.AddState(state);
        state.AddBehaviour(new RotateAIBehaviour(5f));
        state.AddBehaviour(new PlayAnimationBehaviour("Rotate Right", 0.1f));

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new RangeCheckToPlayerCondition(e => e < stateMachine.User.GetComponent <EnemyController>().AI.stoppingDistance));
        transition.AddCondition(new AngleCheckToPlayerCondition(e => e <0.1f && e> -0.1f));

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new RangeCheckToPlayerCondition(e => e > stateMachine.User.GetComponent <EnemyController>().lookRadius));
        transition.AddCondition(new AngleCheckToPlayerCondition(e => e <0.1f && e> -0.1f));

        transition = new Transition("WalkForward");
        state.AddTransition(transition);
        transition.AddCondition(new RangeCheckToPlayerCondition(e => e < stateMachine.User.GetComponent <EnemyController>().lookRadius));
        transition.AddCondition(new RangeCheckToPlayerCondition(e => e > stateMachine.User.GetComponent <EnemyController>().AI.stoppingDistance));
    }
コード例 #4
0
    private void CreateWalkBackward(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("WalkBackward");
        stateMachine.AddState(state);
        state.AddBehaviour(new MoveBehaviour(-3f));
        state.AddBehaviour(new RotateBehaviour(75f));
        state.AddBehaviour(new PlayAnimationBehaviour("Walk", 0.1f));
        state.AddBehaviour(new DrainEnergyBehaviour(3));

        transition = new Transition("Jump");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("Jump"));
        transition.AddCondition(new IsGroundedCondition());

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new VerticalAxisCondition(e => e == 0));

        transition = new Transition("Transformation");
        state.AddTransition(transition);
        transition.AddCondition(new IsEnergyZeroCondition());
    }
コード例 #5
0
ファイル: IdleState.cs プロジェクト: Glonfindel/Wolfs-Soul
    private void CreateIdle(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("Idle");
        stateMachine.AddState(state);
        state.AddBehaviour(new PlayAnimationBehaviour("Idle", 0.1f));
        state.AddBehaviour(new RegenerationBehaviour(stateMachine.User, 1.5f));

        transition = new Transition("WalkForward");
        state.AddTransition(transition);
        transition.AddCondition(new VerticalAxisCondition(e => e > 0));

        transition = new Transition("WalkBackward");
        state.AddTransition(transition);
        transition.AddCondition(new VerticalAxisCondition(e => e < 0));

        transition = new Transition("RotateRight");
        state.AddTransition(transition);
        transition.AddCondition(new HorizontalAxisCondition(e => e > 0));

        transition = new Transition("RotateLeft");
        state.AddTransition(transition);
        transition.AddCondition(new HorizontalAxisCondition(e => e < 0));

        transition = new Transition("Jump");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("Jump"));
        transition.AddCondition(new IsGroundedCondition());

        transition = new Transition("Dodge");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("Dodge"));
        transition.AddCondition(new IsGroundedCondition());

        transition = new Transition("MeleeAttack");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("MeleeAttack"));

        transition = new Transition("RangeAttack");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("RangeAttack"));

        transition = new Transition("Transformation");
        state.AddTransition(transition);
        transition.AddCondition(new ButtonCondition("Transformation"));
        transition.AddCondition(new IsEnergyFullCondition());
    }
コード例 #6
0
        public void AddCondition_ReturnsInputtedCondition()
        {
            Transition transition             = new Transition(new SpeechNode(), new SpeechNode());
            MockTransitionCondition condition = new MockTransitionCondition();

            Assert.AreSame(condition, transition.AddCondition(condition));
        }
コード例 #7
0
    // Use this for initialization
    void Start()
    {
        HPAttack = new MaxCondition();
        HPDefend = new MinCondition();

        MoveForward  = new Action();
        MoveBackward = new Action();

        Attack.AddAction(MoveForward);
        Defend.AddAction(MoveBackward);

        MoveForward.SetDirection(-Vector3.right);
        MoveBackward.SetDirection(Vector3.right);

        SwitchStanceDefend = new Transition();
        SwitchStanceAttack = new Transition();

        HPAttack.SetTestValue(PlayerHp, MaxHp / 2);
        HPDefend.SetTestValue(PlayerHp, MaxHp / 2);

        SwitchStanceDefend.AddCondition(HPDefend);
        SwitchStanceDefend.SetTargetState(Attack);

        SwitchStanceAttack.AddCondition(HPAttack);
        SwitchStanceAttack.SetTargetState(Defend);
        Attack = new State(SwitchStanceAttack);
        Defend = new State(SwitchStanceDefend);

        FSM = new FiniteStateMachine(Attack);
    }
コード例 #8
0
        public void AddCondition_InputtingNull_DoesNotAddToTransition_ReturnsNull()
        {
            Transition transition = new Transition(new SpeechNode(), new SpeechNode());

            Assert.AreEqual(0, transition.ConditionCount);
            Assert.IsNull(transition.AddCondition(null));
            Assert.AreEqual(0, transition.ConditionCount);
        }
コード例 #9
0
        public void AddCondition_SetsInputtedConditionTransition_ToTransition()
        {
            Transition transition             = new Transition(new SpeechNode(), new SpeechNode());
            MockTransitionCondition condition = new MockTransitionCondition();

            Assert.IsNull(condition.Transition);

            transition.AddCondition(condition);

            Assert.AreSame(transition, condition.Transition);
        }
コード例 #10
0
        public void AddCondition_AddsInputtedCondition_ToTransition()
        {
            Transition transition = new Transition(new SpeechNode(), new SpeechNode());

            Assert.AreEqual(0, transition.ConditionCount);

            MockTransitionCondition condition = new MockTransitionCondition();

            transition.AddCondition(condition);

            Assert.AreEqual(1, transition.ConditionCount);
            Assert.AreSame(condition, transition.GetConditionAt(0));
        }
コード例 #11
0
ファイル: JumpState.cs プロジェクト: Glonfindel/Wolfs-Soul
    private void CreateJump(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("Jump");
        stateMachine.AddState(state);
        state.AddBehaviour(new JumpBehaviour(5));
        state.AddBehaviour(new PlayAnimationBehaviour("Jump", 0.1f));

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new AnimationFinishedCondition());
    }
コード例 #12
0
    private void CreateRangeAttack(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("RangeAttack");
        stateMachine.AddState(state);
        state.AddBehaviour(new ExecuteAttackOnAnimCurveBehaviour(new AttackBehaviour("RangeAttack")));
        state.AddBehaviour(new PlayAnimationBehaviour("RangeAttack", 0.1f));

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new AnimationFinishedCondition());
    }
コード例 #13
0
ファイル: ActiveState.cs プロジェクト: Glonfindel/Wolfs-Soul
    private void CreateActive(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("Active");
        stateMachine.AddState(state);
        state.AddBehaviour(new PlayAnimationBehaviour("Active", 0));
        state.AddBehaviour(new SetAIOnExitBehaviour(true));

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new AnimationFinishedCondition());
    }
コード例 #14
0
ファイル: DodgeState.cs プロジェクト: Glonfindel/Wolfs-Soul
    private void CreateDodge(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("Dodge");
        stateMachine.AddState(state);
        state.AddBehaviour(new DodgeBehaviour(-10));
        state.AddBehaviour(new PlayAnimationBehaviour("Dodge", 0.1f));

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new AnimationFinishedCondition());
    }
コード例 #15
0
    private void CreateInactive(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("Inactive");
        stateMachine.AddState(state);
        state.AddBehaviour(new SetAIOnEnterBehaviour(false));
        state.Enter();
        state.AddBehaviour(new PlayAnimationBehaviour("Inactive", 0));

        transition = new Transition("Active");
        state.AddTransition(transition);
        transition.AddCondition(new RangeCheckToPlayerCondition(e => e < 10f));
    }
コード例 #16
0
    private void CreateAttack5(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("Attack5");
        stateMachine.AddState(state);
        state.AddBehaviour(new ExecuteAttackOnAnimCurveBehaviour(new AttackBehaviour("Attack5")));
        state.AddBehaviour(new SpawnEffectOnEnterBehaviour(Resources.Load <GameObject>("SFX/FireBreath")));
        state.AddBehaviour(new PlayAnimationBehaviour("Attack5", 0.1f));
        state.AddBehaviour(new SetAttackBehaviour());

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new AnimationFinishedCondition());
    }
コード例 #17
0
    private void CreateTransformation(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("Transformation");
        stateMachine.AddState(state);
        state.AddBehaviour(new PlayAnimationBehaviour("Transformation", 0.1f));
        state.AddBehaviour(new TransformationBehaviour(true));
        state.AddBehaviour(new SpawnEffectOnEnterBehaviour(Resources.Load <GameObject>("SFX/Howl")));
        state.AddBehaviour(new SpawnEffectOnExitBehaviour(Resources.Load <GameObject>("TransformationEffect")));

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new AnimationFinishedCondition());
    }
コード例 #18
0
    private void CreateGetHit(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("GetHit");
        stateMachine.AddState(state);
        state.AddBehaviour(new PlayAnimationBehaviour("GetHit", 0f));

        transition = new Transition("Death");
        state.AddTransition(transition);
        transition.AddCondition(new IsDeadCondition());

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new AnimationFinishedCondition());
    }
コード例 #19
0
ファイル: GetHitState.cs プロジェクト: Glonfindel/Wolfs-Soul
    private void CreateGetHit(StateMachine stateMachine)
    {
        State      state;
        Transition transition;

        state = new State("GetHit");
        stateMachine.AddState(state);
        state.AddBehaviour(new PlayAnimationBehaviour("GetHit", 0f));
        state.AddBehaviour(new SpawnEffectOnEnterBehaviour(Resources.Load <GameObject>("SFX/GhoulGetHit")));

        transition = new Transition("Death");
        state.AddTransition(transition);
        transition.AddCondition(new IsDeadCondition());

        transition = new Transition("Idle");
        state.AddTransition(transition);
        transition.AddCondition(new AnimationFinishedCondition());
    }
コード例 #20
0
 public override void ItemInitiation()
 {
     base.ItemInitiation();
     _transition.AddCondition(this);
 }
コード例 #21
0
 protected override void AgentInitiation()
 {
     base.AgentInitiation();
     _transition.AddCondition(this);
 }
コード例 #22
0
 void Init()
 {
     _transition.AddCondition(this);
 }