コード例 #1
0
 //--------------------------------------------------------------------------------------------------------------
 protected override void initComponents()
 {
     base.initComponents();
     mAvatar       = addComponent(Typeof <CharacterComponentModel>(), true) as CharacterComponentModel;
     mStateMachine = addComponent(Typeof <CharacterStateMachine>(), true) as CharacterStateMachine;
     mDecisionTree = addComponent(Typeof <CharacterDecisionTree>()) as CharacterDecisionTree;
 }
コード例 #2
0
 void OnEnable()
 {
     ClassInit("Default");
     FSM       = GetComponent <CharacterStateMachine>();
     FSM.owner = this;
     OnBattleStart();
 }
コード例 #3
0
    // Update is called once per frame
    void Update()
    {
        switch (BattleState)
        {
        case PerformAction.IDLE:
            break;

        case PerformAction.PROCESSING_TURN:
            BaseClass             turnPerformer = TurnOrder[0].Attacker;
            CharacterStateMachine FSM           = turnPerformer.GetFSM();
            if (TurnOrder[0].IsAoE || TurnOrder[0].TargetAlly)
            {
                FSM.Target = TurnOrder[0].Attacker.transform;
            }
            else
            {
                FSM.Target = TurnOrder[0].Target.transform;
            }
            FSM.currentState = CharacterStateMachine.TurnState.ACTION;
            battleState      = PerformAction.PERFORM_ACTION;
            break;

        case PerformAction.PERFORM_ACTION:
            // waiting for player animation and calculate damage
            break;

        case PerformAction.ACTION_ENDED:
            break;
        }
    }
コード例 #4
0
 public override void initComponents()
 {
     base.initComponents();
     mAvatar       = addComponent <CharacterComponentModel>(true);
     mStateMachine = addComponent <CharacterStateMachine>(true);
     mDecisionTree = addComponent <CharacterDecisionTree>();
 }
コード例 #5
0
 public virtual void Init <T>(T data) where T : CharacterData
 {
     SetData(data);
     GetData().entity = this;
     StateMachine     = new CharacterStateMachine(this);
     StateMachine.SetCurrentState <CharacterIdleState>();
 }
コード例 #6
0
 public Character(CharacterStateMachine sm) : base()
 {
     _instance          = this;
     _stateMachine      = sm;
     _previousFrameInfo = new CharacterInfo();
     _currentInfo       = new CharacterInfo();
 }
コード例 #7
0
ファイル: FSM.cs プロジェクト: coding137/-
    //----------------------------------------------------------------------------
    /// <summary>
    /// 타겟에게 나의 능력치를 기반하여 HP를 감소시킨다
    /// </summary>
    void Enter_AttackState()
    {
        MonsterStatus myAttribute = gameObject.GetComponent <MonsterStatus>();

        if (ProcessDeadState(myAttribute))
        {
            return;
        }

        //애니메이션 실행

        Playerstatus targetAttribute = Target.GetComponent <Playerstatus>();

        targetAttribute.current_hp -= myAttribute.damage;

        Debug.Log("Attack : " + gameObject.name + "->" + Target.name);
        Debug.Log("Hp : " + targetAttribute.current_hp.ToString());

        CharacterStateMachine targetStateMachine = Target.GetComponent <CharacterStateMachine>();

        targetStateMachine.SetState(State.DAMAGED);

        //대상이 죽은 경우는 타겟 해제
        if (targetAttribute.current_hp <= 0)
        {
            Target = null;
        }

        StartCoroutine("TransStateToIdle", myAttribute.Atk_delay);
    }
コード例 #8
0
ファイル: BattleController.cs プロジェクト: charlink1/iwmr
    private void LoadCharacter(int characterIndex, Transform objectTransform)
    {
        PlayableCharacter playCharacter = CharacterParty.charactersParty[characterIndex];
        GameObject        characterGO   = Instantiate(playCharacter.prefab);

        characterGO.transform.position = objectTransform.position;
        characterGO.transform.rotation = objectTransform.rotation;
        PlayableCharacter character = characterGO.GetComponent <PlayableCharacter>();

        character.charStats        = playCharacter.charStats;
        character.currentEquipment = playCharacter.currentEquipment;
        character.magicAttacks     = playCharacter.magicAttacks;
        character.attacksList      = playCharacter.attacksList;

        GameObject            charStatsPanel = Instantiate(characterBattleStatsPrefab, characterBattleStatsPanel, false);
        CharacterStateMachine stateMachine   = characterGO.GetComponent <CharacterStateMachine>();

        CharacterSelected button = charStatsPanel.GetComponentInChildren <CharacterSelected>();

        button.characterPrefab = characterGO;

        Transform stateMachineTransform = charStatsPanel.transform.Find(progressBarName);

        stateMachine.progressBar = stateMachineTransform.GetComponent <Image>();
        stateMachine.nameText    = charStatsPanel.transform.Find(nameTextName).GetComponent <Text>();
        stateMachine.healthText  = charStatsPanel.transform.Find(HPTextName).GetComponent <Text>();
        stateMachine.magicText   = charStatsPanel.transform.Find(MPTextName).GetComponent <Text>();

        charatersList.Add(playCharacter);
        HeroesInBattle.Add(characterGO);
    }
コード例 #9
0
 public CharacterMachineState(CharacterStateMachine stateMachine)
 {
     Machine  = stateMachine;
     control  = Machine.Character.GetComponentInFamily <CharacterControlInput>();
     animator = Machine.Character.GetComponentInFamily <CharacterAnimator>();
     motion   = Machine.Character.GetComponentInFamily <Rigidbody2DMotion>();
 }
コード例 #10
0
        public LogicEngine()
        {
            ImgUtils.Init();
            KeyUtils.WindowToSendKeysIn = Constants.KO_WINDOW;
            _gos                 = new List <GameObject>();
            _initTimer           = new CTimer();
            _initTimer.Interval  = START_DELAY * 1000;
            _initTimer.AutoReset = false;

            _updateTimer           = new CTimer();
            _updateTimer.Elapsed  += OnUpdate;
            _updateTimer.AutoReset = false;
            _updateTimer.Interval  = UPDATE_DELAY * 1000;

            GameObject            go        = new GameObject();
            CharacterStateMachine sm        = new CharacterStateMachine();
            Character             character = new Character(sm);
            DirComponent          direction = new DirComponent();
            ScreenPosition        screenPos = new ScreenPosition();

            go.AddComponent(screenPos);
            go.AddComponent(sm);
            go.AddComponent(direction);
            go.AddComponent(character);
            _gos.Add(go);
            _sendStart = true;
        }
コード例 #11
0
 public CharacterBaseState(CharacterModel characterModel, InputModel inputModel, CharacterAnimationController animationController,
                           CharacterStateMachine stateMachine)
 {
     _characterModel      = characterModel;
     _inputModel          = inputModel;
     _animationController = animationController;
     _stateMachine        = stateMachine;
 }
コード例 #12
0
 public CharacterState(Character character, CharacterStateMachine characterStateMachine, CharacterData characterData, PlayerInputs playerInputs, string animBoolName)
 {
     this.character             = character;
     this.characterStateMachine = characterStateMachine;
     this.characterData         = characterData;
     this.playerInputs          = playerInputs;
     this.animBoolName          = animBoolName;
 }
コード例 #13
0
ファイル: Timer.cs プロジェクト: framadan/Final_Project_Main
 public Timer( float targetTime, CharacterStateMachine stateMachine, States state)
 {
     if(targetTime == 0)
         targetTime = 180;
     this.targetTime = targetTime;
     this.stateMachine = stateMachine;
     this.state = state;
     StartTimer();
 }
コード例 #14
0
 protected virtual void InitStateMachine()
 {
     _stateMachine       = gameObject.AddComponent <CharacterStateMachine>();
     _stateMachine.Debug = true;
     _stateMachine.SetDelegateForState(CharacterState.PRE_INIT, Init);
     _stateMachine.SetDelegateForState(CharacterState.INIT_MOVE, InitMove);
     _stateMachine.SetDelegateForState(CharacterState.MOVE_TO, MoveTo);
     _stateMachine.SetDelegateForState(CharacterState.MOVE_COMPLETE, OnMoveComplete);
 }
コード例 #15
0
 public FallOnGroundState(CharacterModel characterModel, InputModel inputModel, CharacterAnimationController animationController,
                          CharacterStateMachine stateMachine) : base(characterModel, inputModel, animationController, stateMachine)
 {
     Type           = StateType.NotActive;
     IsTargeting    = false;
     IsAttacking    = false;
     CanExit        = false;
     CanBeOverriden = true;
 }
コード例 #16
0
ファイル: DancingState.cs プロジェクト: Akelaina/VanHelsing
 public DancingState(CharacterModel characterModel, InputModel inputModel, CharacterAnimationController animationController,
                     CharacterStateMachine stateMachine) : base(characterModel, inputModel, animationController, stateMachine)
 {
     Type           = StateType.Default;
     IsTargeting    = false;
     IsAttacking    = false;
     CanExit        = false;
     CanBeOverriden = true;
 }
コード例 #17
0
    private void Awake()
    {
        characterStateMachine = new CharacterStateMachine();
        characterData         = new CharacterData();
        playerInputs          = GetComponent <PlayerInputs>();

        idleState = new IdleState(this, characterStateMachine, characterData, playerInputs, "");
        moveState = new MoveState(this, characterStateMachine, characterData, playerInputs, "");
    }
コード例 #18
0
 protected virtual void InitStateMachine()
 {
     _stateMachine       = gameObject.AddComponent <CharacterStateMachine>();
     _stateMachine.Debug = true;
     _stateMachine.SetDelegateForState(CharacterState.PRE_INIT, Init);
     _stateMachine.SetDelegateForState(CharacterState.SEARCHING_FOR_TARGET, FindNewTarget);
     _stateMachine.SetDelegateForState(CharacterState.INIT_ATTACK, InitAttack);
     _stateMachine.SetDelegateForState(CharacterState.ATTACKING, DoAttack);
     _stateMachine.SetDelegateForState(CharacterState.ATTACK_COMPLETE, OnAttackComplete);
 }
コード例 #19
0
    public void Init(Character owner)
    {
        CharacterStateMachine state = null;

        for (UnitStateIndex index = UnitStateIndex.Idle; index < UnitStateIndex.Max; ++index)
        {
            Util.CreateInstanceToString <CharacterStateMachine>(ref state, string.Format("{0}State", index.ToString()));
            state.Init(index, owner);
            m_states[(int)index] = state;
        }
    }
コード例 #20
0
ファイル: WorldManager.cs プロジェクト: qyzeng/IsoNetwork
 public virtual void Init()
 {
     if (ReferencePlayerObject != null) {
         _playerChar = ((GameObject)Network.Instantiate (ReferencePlayerObject, PlayerSpawnPoint, Quaternion.identity, 0)).GetComponent<CharacterStateMachine> ();
         InitCharacter (_playerChar);
     }
     VerifyUseOculus ();
     if (_referenceCamControlToUse != null) {
         _currentCamControl = ((GameObject)GameObject.Instantiate (_referenceCamControlToUse.gameObject)).GetComponent<CameraControl> ();
     }
 }
コード例 #21
0
 public override void resetProperty()
 {
     base.resetProperty();
     mBaseData     = null;
     mAvatar       = null;
     mRigidBody    = null;
     mStateMachine = null;
     mDecisionTree = null;
     mGUID         = 0;
     mAnimationLenghtList.Clear();
 }
コード例 #22
0
 public State(
     CharacterStateMachine animatorFSM,
     Settings settings,
     NavMeshAgent agent,
     Transform target
     )
 {
     this.animatorFSM = animatorFSM;
     this.settings    = settings;
     this.target      = target;
     this.agent       = agent;
 }
コード例 #23
0
    // Update is called once per frame
    void Update()
    {
        switch (characterState)
        {
        case (CharacterStateMachine.WAIT):
            // idle
            break;

        case (CharacterStateMachine.CHOOSEACTION):
            if (stunnedFor > 0)
            {
                Debug.Log("Character " + charName + " is stunned and skips this turn.");
                StartCoroutine(BSM.UIM.ShowFadeingMessage("Character " + charName + " is stunned and skips this turn."));
                characterState = CharacterStateMachine.ENDTURN;
            }
            else
            {
                Debug.Log("Turn of character: " + this.charName);
                ActivateMovableTiles();
                //handle player input regarding actions to be taken by character
                BSM.MSM.currentMouseState = MouseStateManager.MouseStateMachine.CHOOSEACTION;

                characterState = CharacterStateMachine.WAIT;
            }
            break;

        case (CharacterStateMachine.AFTERACTION):
            if (currentActionPoints == 0)
            {
                Debug.Log("Character " + charName + " ran out of Action Points! Turn ended!");
                characterState = CharacterStateMachine.ENDTURN;
            }
            else
            {
                characterState = CharacterStateMachine.CHOOSEACTION;
            }
            break;

        case (CharacterStateMachine.MOVING):
            //idle while moving

            break;

        case (CharacterStateMachine.ENDTURN):
            DeActivateNeighboringTiles();
            UpdateCharactersStats();
            Debug.Log(charName + " has ended his turn!");
            characterState = CharacterStateMachine.WAIT;
            BSM.CharactersByInitiative.Remove(this);      //RemoveAt (0);
            BSM.currentState = BattlefieldStateManager.BattlefieldStateMachine.PERFORMTURN;
            break;
        }
    }
コード例 #24
0
    private void Awake()
    {
        _stateMachine = GetComponent <CharacterStateMachine>();
        _camera       = _stateMachine.GetCamera();

        // Create the objects used for UI
        pullLines    = Instantiate(pullLineUIObject, this.transform);
        forwardLines = Instantiate(forwardLineUIObject, this.transform);

        Transform grabRingParent = GameObject.Find("Canvas").transform;

        grabRing = Instantiate(grabRingUIObject, grabRingParent);
    }
コード例 #25
0
    void Start()
    {
        _collider     = new CharacterCollider(GetComponentInChildren <Collider2D>(), groundLayer);
        _stateMachine = new CharacterStateMachine(this);
        _input        = new KeyboardCharacterInput();

        _animator       = GetComponentInChildren <Animator>();
        _spriteRenderer = GetComponentInChildren <SpriteRenderer>();

        _gravity      = (2 * jumpHeight) / Mathf.Pow(timeToApex, 2);
        _jumpVelocity = Mathf.Sqrt(2 * _gravity * jumpHeight);

        _rigidbody = new CharacterRigidbody(_gravity, transform, _collider);
    }
コード例 #26
0
    public void characterDies()
    {
        var rotationVector = transform.rotation.eulerAngles;

        rotationVector.z        = 270;
        this.transform.rotation = Quaternion.Euler(rotationVector);

        BSM.CharactersByInitiative.Remove(this);
        BSM.UIM.updateOrderQueue(BSM.CharactersByInitiative);

        if ((BSM.checkIfAlliesLeft(BSM.battlefield.characters) && BSM.checkIfEnemiesLeft(BSM.battlefield.characters)) == false)
        {
            this.characterState = CharacterStateMachine.ENDTURN;
        }

        //this.characterArmature.animation.Stop (); // swap to death animation to be played once in the future
    }
コード例 #27
0
        /// <summary>
        /// Initalize the states and add them
        /// </summary>
        protected override void Start()
        {
            base.Start();

            StateMachine = new CharacterStateMachine(this);

            falling  = new Falling();
            grounded = new Grounded();
            motion   = new Motion();
            cutscene = new Cutscene();

            // Add states
            StateMachine.AddState(StateName.Falling, falling);
            StateMachine.AddState(StateName.Grounded, grounded);
            StateMachine.AddState(StateName.Motion, motion);
            StateMachine.AddState(StateName.Cutscene, cutscene);
        }
コード例 #28
0
 void Start()
 {
     animator     = GetComponent <Animator>();
     stateMachine = GetComponent <CharacterStateMachine>();
     controller   = GetComponent <CharacterController>();
     //Player setup stuff
     speed           = parameters.playerConfig.speed;
     attackHitPoints = parameters.playerConfig.attackDamage;
     attackRange     = parameters.playerConfig.attackRange;
     attackAngle     = parameters.playerConfig.attackAngle;
     //Dash stuff
     dashRefillRate          = parameters.playerConfig.dashRefillRate;
     dashLength              = parameters.playerConfig.dashLength;
     numberOfDashesAvailable = parameters.playerConfig.numberOfDashesAvailable;
     maxDashAvailable        = parameters.playerConfig.numberOfDashesAvailable;
     initialSpeed            = speed;
 }
コード例 #29
0
    public override void execute()
    {
        var character = mReceiver as Character;
        CharacterStateMachine stateMachine = character.getStateMachine();

        // 移除状态组时,认为状态是强行被中断
        if (mStateGroup != null)
        {
            stateMachine.removeStateInGroup(mStateGroup, true, mParam);
            return;
        }
        // 移除指定状态时认为状态是正常结束
        if (mState != null)
        {
            stateMachine.removeState(mState, false, mParam);
        }
    }
コード例 #30
0
 public override void resetProperty()
 {
     base.resetProperty();
     mBaseData     = null;
     mAvatar       = null;
     mRigidBody    = null;
     mStateMachine = null;
     mDecisionTree = null;
     mGUID         = 0;
     mAnimationLenghtList.Clear();
     mCharacterType           = null;
     mCharacterLoadedCallback = null;
     mModelPath = null;
     mAnimationControllerPath = null;
     mUserData = null;
     mModelTag = 0;
     // mModelLoadCallback不重置
     // mModelLoadCallback = null;
 }
コード例 #31
0
ファイル: WorldManager.cs プロジェクト: qyzeng/IsoNetwork
 public void InitCharacter(CharacterStateMachine character)
 {
     //		if (ReferenceModel != null) {
     //			character.ModelObject = (GameObject)GameObject.Instantiate (ReferenceModel);
     //			character.ModelObject.transform.parent = _playerChar.transform;
     //			character.ModelObject.transform.localPosition = Vector3.zero;
     //			character.ModelObject.transform.localRotation = Quaternion.identity;
     //		}
     if (OnPlayerReady != null) {
         OnPlayerReady ();
     }
 }
コード例 #32
0
 public virtual void Setup(BaseEquipment weapon, MovesetType type)
 {
     _weapon = weapon;
     _user = weapon.User;
     _userState = _user.CharState;
 }
コード例 #33
0
 public static void AddFlinch(CharacterStateMachine stateMachine, float time )
 {
 }
コード例 #34
0
    /// <summary>
    /// Initializes the values associated to this character instance. </summary>
    protected virtual void Awake()
    {
        //Unity Components
        _coordinates = GetComponent<Transform>();
        _controller = GetComponent<CharacterController>();
        _rigidbody = GetComponent<Rigidbody>();

        //Basic Character Components
        charAnimation = GetComponent<Animator> ();
        if (charAnimation != null) charAnimation.SetLayerWeight (1, 1);
        charStats = GetComponent<CharacterStats> ();
        charMoveSet = GetComponent<CharacterMovesetModule> ();

        oldCharAnimation = transform.Find ("Renderer").GetComponent<SkinnedMeshRenderer>().material;

        if (oldCharAnimation == null)
            Debug.LogError (name+"'s material is null");

        //			GetComponentInChildren<MeshRenderer> ().material;

        //Add specialized character components
        switch (charType) {
        case CharacterType.Player:
            charState = gameObject.AddComponent <CharacterStateMachine> ();			//dictates character's moveset and availble actions
            charInput = gameObject.AddComponent <PlayerInput> ();				//dictates characters focus and behaviour
            break;

        case CharacterType.Enemy:
            charState = gameObject.AddComponent <EnemyStateModule> ();
            charInput = gameObject.AddComponent <AIInput> ();
            break;

        default:
            break;
        }
    }
コード例 #35
0
ファイル: Timer.cs プロジェクト: framadan/Final_Project_Main
 public static void RemoveState( CharacterStateMachine stateMachine, States state )
 {
     stateMachine.RemoveState(state);
 }
コード例 #36
0
    protected virtual void Start()
    {
        userState = user.CharState;

        scalingBuff.SetScaling(user);

        availableActions = activeMoveset.Moveset;
    }
コード例 #37
0
 void Start()
 {
     stateMachine = characterAccessor.StateMachine;
 }
コード例 #38
0
 public CharacterDashState(CharacterStateMachine stateMachine) : base(stateMachine)
 {
 }
コード例 #39
0
 public PlayerTalkingState(CharacterStateMachine stateMachine) : base(stateMachine)
 {
 }
コード例 #40
0
 public void InitCharacter(CharacterStateMachine character)
 {
     if (OnPlayerReady != null) {
         OnPlayerReady ();
     }
 }
コード例 #41
0
 // Use this for initialization
 void Start()
 {
     stateMachine = gameObject.GetComponent<CharacterStateMachine> ();
     rigidbody = GetComponent<Rigidbody>();
     //learning state machine placement
     stateMachine.AddState (States.NO_FLINCH, 2, null, null , printEnd);
 }
コード例 #42
0
    public virtual void Init()
    {
        if (myNet) {
            myNet.RPC("SetUseCardBoard",RPCMode.AllBuffered,_UseCardBoard);
        }

        PlayerSpawnPoint = new Vector3(Random.Range(-9,6),0f,Random.Range(-9,9));

        if (ReferencePlayerObject != null) {
            _playerChar = ((GameObject)Network.Instantiate (ReferencePlayerObject, PlayerSpawnPoint, Quaternion.identity, 0)).GetComponent<CharacterStateMachine> ();
            InitCharacter (_playerChar);
        }

        VerifyUseCardBoard ();
        if (_referenceCamControlToUse != null) {
            _currentCamControl = ((GameObject)GameObject.Instantiate (_referenceCamControlToUse.gameObject)).GetComponent<CameraControl> ();
        }
        //WP.Controller.ControllerUtility.OnControllerModeChanged += OnControllerModeChanged;
    }