// プレイヤーがタッチしている敵を取得.タッチしていなければ -1 が返る public int checkTouchEnemy(bool is_long_touch) { BattleTouchInput battle_touch_input = BattleTouchInput.Instance; bool triger = false; if (is_long_touch) { triger = battle_touch_input.isTouching() && battle_touch_input.isDrag() == false && battle_touch_input.getTouchingTime() >= 0.5f; } else { triger = battle_touch_input.isTapped(); } if (triger) { BattleScene.FieldCollision field_collision = GetComponent <BattleScene.FieldCollision>(); if (field_collision != null) { if (field_collision.IsMouseOver) { Vector2 mouse_position = battle_touch_input.getPosition(); float dist_sqr_min = 1.0e+30f; int touch_index = -1; for (int idx = 0; idx < m_EnemyObjectViewControls.Length; idx++) { BattleEnemyObjectViewControl enemy_view_control = m_EnemyObjectViewControls[idx]; if (enemy_view_control != null) { Vector3 enemy_screen_position = battle_touch_input.getScreenPosition(enemy_view_control.m_TargetCursorObject.transform.position); Vector2 dir = mouse_position - new Vector2(enemy_screen_position.x, enemy_screen_position.y); float dist_sqr = dir.sqrMagnitude; if (dist_sqr < dist_sqr_min) { dist_sqr_min = dist_sqr; touch_index = idx; } } } return(touch_index); } } } return(-1); }
// Update is called once per frame void Update() { BattleTouchInput battle_touch_input = BattleTouchInput.Instance; if (battle_touch_input.isTouching()) { if (battle_touch_input.isOverrideTouchMode() == false) { m_HandAreaTouchIndex = m_HandAreaViewControl.getTouchIndex(); m_FieldAreaTouchIndex = m_FieldAreaViewControl.getTouchIndex(); } else { m_HandAreaTouchIndex = battle_touch_input.getOverrideTouchMode_HandAreaTouchIndex(); m_FieldAreaTouchIndex = battle_touch_input.getOverrideTouchMode_FieldAreaTouchIndex(); } if (m_HandAreaTouchIndex >= 0) { // 手札エリアに触れているのでカードがあれば拾う. m_BattleCardManager.catchHandAreaCard(m_HandAreaTouchIndex); } } else { if (battle_touch_input.isWorking()) { if (m_BattleCardManager.isCatchingCardByPlayer()) { // 手を放したのでカードを置く. m_BattleCardManager.putInHandCard(m_HandAreaTouchIndex, m_FieldAreaTouchIndex); } } else { // 入力が中断した場合はカードを元の位置に戻す. m_BattleCardManager.putInHandCardByTimeOver(); } m_HandAreaTouchIndex = -1; m_FieldAreaTouchIndex = -1; } if (m_BattleCardManager.m_InHandArea.getCardCount() > 0) { m_FieldAreaViewControl.setViewSelect(m_FieldAreaTouchIndex); } else { m_FieldAreaViewControl.setViewSelect(-1); } // カードの明暗表示を切り替え if (m_BattleCardManager.isUpdateSkillCard(true)) { for (int idx = 0; idx < m_BattleCardManager.m_BattleCards.Length; idx++) { m_BattleCardManager.m_BattleCards[idx].m_IsOn = m_BattleCardManager.isSkillCard(m_BattleCardManager.m_BattleCards[idx].getElementType()); } } // リーチラインの描画更新 BattleSkillReachInfo reach_info = m_BattleCardManager.getReachInfo(); if (reach_info != null) { m_BattleReachLineViewControl.clearLine(); m_BattleReachLineViewControl.setCameraPosition(battle_touch_input.getCamera().transform.position); for (int hand_index = 0; hand_index < m_BattleCardManager.m_HandArea.getCardMaxCount(); hand_index++) { Vector3 hand_position; BattleCard battle_card = m_BattleCardManager.m_HandArea.getCard(hand_index); if (battle_card != null) { hand_position = m_HandAreaViewControl.getBattleCardTransform(hand_index, HandAreaViewControl.TransformType.HAND_AREA).position; } else { battle_card = m_BattleCardManager.m_InHandArea.getCard(0); if (battle_card == null) { // 場にパネルを置いた瞬間:直前の手の位置に表示 hand_position = m_InHandViewControl.getBattleCardTransform(0).position; } else if (battle_card.isChangePhase()) { // パネルを手に持った瞬間:手の位置がまだ更新されていないので、手札領域の座標を使用 hand_position = m_HandAreaViewControl.getBattleCardTransform(hand_index, HandAreaViewControl.TransformType.HAND_AREA).position; } else { hand_position = m_InHandViewControl.getBattleCardTransform(0).position; } } for (int field_index = 0; field_index < m_BattleCardManager.m_FieldAreas.getFieldAreaCountMax(); field_index++) { MasterDataDefineLabel.ElementType element_type = reach_info.getReachInfo(field_index, hand_index); if (element_type != MasterDataDefineLabel.ElementType.NONE) { Vector3 field_position = m_FieldAreaViewControl.getFieldTransform(field_index).position; m_BattleReachLineViewControl.addLine(hand_position, field_position, element_type); } } } } else { m_BattleReachLineViewControl.clearLine(); } int in_hand_card_count = m_BattleCardManager.m_InHandArea.getCardCount(); if (in_hand_card_count != m_InHandCardCount) { if (in_hand_card_count == 1 && m_InHandCardCount == 0) { //1枚目のカードを手に持った時のSE SoundUtil.PlaySE(SEID.SE_BATLE_COST_PLUS_1); } else if (in_hand_card_count > 1) { //2枚目以上のカードを手に持った時のSE SoundUtil.PlaySE(SEID.SE_BATLE_COST_PLUS_2); // エフェクト EffectManager.Instance.playEffect(SceneObjReferGameMain.Instance.m_EffectPrefab.m_2DBattleCostPlus, Vector3.zero, Vector3.zero, m_InHandViewControl.getBattleCardTransform(0), null, 5.0f); } else if (in_hand_card_count == 0) { bool is_put_field = false; // 札を場に置いたかどうか for (int idx = 0; idx < m_BattleCardManager.m_HandArea.getCardMaxCount(); idx++) { if (m_BattleCardManager.m_HandArea.getCard(idx) == null) { // 手札に空きがあるので場に置いたと判断 is_put_field = true; break; } } if (is_put_field) { // 場に札を置いた時のSE SoundUtil.PlaySE(SEID.SE_BATLE_COST_PUT); } } m_InHandCardCount = in_hand_card_count; } // 場・カード関連のエフェクト for (int idx = 0; idx < m_BattleCardManager.getEffectInfoCount(); idx++) { _BattleCardManager.EffectInfo effect_info = m_BattleCardManager.getEffectInfo(idx); Transform trans = getEffectPosition(effect_info.m_PositionIndex, effect_info.m_EffectPosition); if (trans != null) { if (SceneObjReferGameMain.Instance != null) { GameObject effect_prefab = null; switch (effect_info.m_EffectType) { case _BattleCardManager.EffectInfo.EffectType.CARD_CHANGE: effect_prefab = SceneObjReferGameMain.Instance.m_EffectPrefab.m_HandCardTransform; break; case _BattleCardManager.EffectInfo.EffectType.CARD_DESTROY: effect_prefab = SceneObjReferGameMain.Instance.m_EffectPrefab.m_HandCardDestroy; break; case _BattleCardManager.EffectInfo.EffectType.SKILL_FORMED: effect_prefab = SceneObjReferGameMain.Instance.m_EffectPrefab.m_2DSkill; break; } if (effect_prefab != null) { EffectManager.Instance.playEffect(effect_prefab, Vector3.zero, Vector3.zero, trans, null, 5.0f); } } } } m_BattleCardManager.resetEffectInfo(); }