예제 #1
0
        //---------------------------------------------------
        // Attack
        //---------------------------------------------------
        void Attack(Collider collider)
        {
            ActorData?hitData = _actorManager.GetActor(collider.gameObject.GetComponent <Actor>().ActorModel.ActorId);

            if (hitData != null &&
                hitData.Value.Type == Define.ActorType.CHARACTER)
            {
                if (collider.gameObject.GetComponent <Character>().CharacterModel.TeamId
                    != _teamType)
                {
                    AttackHitDelegate(hitData.Value.Actor, _attackPower);
                }
            }
        }
예제 #2
0
        /// <summary>
        /// 指定したアクターの移動
        /// </summary>
        /// <remarks>
        /// 指定したアクターIDのオブジェクトを移動させる<br>
        /// 移動はステージのブロックにそってのみ行われる<br>
        /// 斜め移動はなし、上下左右のみ移動命令が行える<br>
        /// 1ブロックの移動スピードはアクターに依存する<br>
        /// 移動中のアクター、もしくは制御下にないアクターは移動命令を受け付けない
        /// </remarks>
        /// <returns> 移動可否 </returns>
        /// <param name="actorId">移動させたいアクターID</param>
        public bool Move(int actorId, Common.MOVE_TYPE type)
        {
            ActorData?actorData = _actorManager.GetActor(actorId);
            Character character = actorData.Value.Actor.gameObject.GetComponent <Character>();

            if (actorData == null)
            {
                return(false);
            }

            if (character == null || character.CharacterModel.IsMoveUpdate || character.CharacterModel.TeamId != _teamType)
            {
                return(false);
            }

            Vector2 blockData = _battleSystem.StageManager.getPositionBlock(character.gameObject.transform.position + _battleSystem.StageManager.GetMoveVec(type));

            Define.Stage.BLOCK_TYPE blockType = _battleSystem.StageManager.GetBlockType(blockData);

            if (blockType != (int)Define.Stage.BLOCK_TYPE.NORMAL)
            {
                return(false);
            }

            Vector3 targetPos = _battleSystem.StageManager.GetBlockPosition((int)blockData.x, (int)blockData.y);

            targetPos.y = character.transform.position.y;

            if (targetPos == character.transform.position)
            {
                return(false);
            }

            character.CharacterModel.TargetPos = targetPos;

            return(true);
        }