//--------------------------------------------------- // 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); } } }
/// <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); }