Exemplo n.º 1
0
 public void shake(Vector3 pos)
 {
     Vector3 localpos = BattleEnvironmentM.World2LocalPos(pos);
     int item = Mathf.FloorToInt(localpos.x / MapGrid.m_width) - StartUnit;
     if (item >= 0 && item < MapGrid.m_UnitRoomGridNum  ) {
         
     }
     
     for (int i = 1; i <= 3; i ++) {
         GameObject go = null;
         int left = item - i;
         if (left >= 0) {
             go = itemfloor[left];
         } else if (m_Left != null) {
             go = m_Left.itemfloor[MapGrid.m_UnitRoomGridNum + left];
         }
         if (go != null ) {
             
         }
         int right = item + i;
         if (right < MapGrid.m_UnitRoomGridNum) {
             go = itemfloor[right];
         } else if (m_Right != null) {
             go = m_Right.itemfloor[right - MapGrid.m_UnitRoomGridNum];
         }
         if (go != null ) {
             
         }
     }
 }
Exemplo n.º 2
0
    public Vector3 GetMouseGridPos()
    {
        Vector3 v3TouchScreenPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, -Camera.main.transform.position.z);
        Vector3 v3TouchWorldPos  = Camera.main.ScreenToWorldPoint(v3TouchScreenPos);
        Vector3 gridPos          = BattleEnvironmentM.World2LocalPos(v3TouchWorldPos);

        return(gridPos);
    }
Exemplo n.º 3
0
    public Int2 GetMousePosGrid()
    {
        Vector3  v3TouchScreenPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, -Camera.main.transform.position.z);
        Vector3  v3TouchWorldPos  = Camera.main.ScreenToWorldPoint(v3TouchScreenPos);
        Vector3  v3Local          = BattleEnvironmentM.World2LocalPos(v3TouchWorldPos);
        RoomGrid roomGrid         = RoomMap.FindRoomGrid(v3Local);

        if (roomGrid == null)
        {
            return(new Int2(-1, -1));
        }
        return(roomGrid.mPosRoomGrid);
    }
Exemplo n.º 4
0
    /// <summary>
    /// 向点燃位置移动
    /// </summary>
    void ToFirePos()
    {
        //NGUIUtil.DebugLog("向点燃位置移动", "red");
        m_bGotoFirePos = true;
        m_Owner.m_Skin.tRoot.transform.parent = BattleEnvironmentM.GetLifeMBornNode(true);
        Vector3    start = m_Owner.m_Parent.GetSkin().tRoot.localPosition;
        GameObject posgo = m_Owner.m_Parent.GetSkin().ProPerty.HelpPoint.GetVauleByKey(HelpPointName.PetPos);
        Vector3    end   = posgo.transform.position;

        end             = BattleEnvironmentM.World2LocalPos(end);
        m_CurrentAction = new GridActionCmdWalk(start, end, 0.5f, m_Owner.m_Parent.WalkDir, 0);
        m_CurrentAction.SetTarget(m_Owner);
    }
Exemplo n.º 5
0
    /// <summary>
    /// 检测格子是否是房间或者甲板
    /// </summary>
    public static bool CheckBuildOrDeckRoom(Vector3 MousePos)
    {
        Vector3  pos = U3DUtil.SetZ(MousePos, -Camera.main.transform.position.z);
        Vector3  m_v3TouchWorldPos = Camera.main.ScreenToWorldPoint(pos);
        Vector3  gridPos           = BattleEnvironmentM.World2LocalPos(m_v3TouchWorldPos);
        RoomGrid roomGrid          = RoomMap.FindRoomGrid(gridPos);

        if (roomGrid == null)
        {
            return(false);
        }
        Int2 grid = roomGrid.mPosRoomGrid;

        return(CheckBuildOrDeckRoom(grid));
    }
Exemplo n.º 6
0
    void OnMouseDown()
    {
        if (PutCanvasM.CanOperate == false)
        {
            return;
        }

        RaycastHit hit;

        if (WndManager.IsHitNGUI(out hit))//当点击到UI时不做处理
        {
            return;
        }
        if (Input.touchCount >= 2)
        {
            return;
        }
        m_bMouseDown       = true;
        m_bLongTouch       = false;
        m_bTouchMoveChange = true;
        m_fMouseDownTime   = Time.time;
        m_vtotalmouseDelta = Vector2.zero;
        m_vlastFirstTouch  = GetTouchPos(0);
        m_isDrag           = false;
        if (SystemInfo.deviceType == DeviceType.Desktop)
        {
            m_v3MouseTouchDown = Input.mousePosition;
        }
        else
        {
            m_v3MouseTouchDown = Input.GetTouch(0).position;
        }

        //获取按下时画布格子
        Vector3 m_v3TouchScreenPos = new Vector3(m_v3MouseTouchDown.x, m_v3MouseTouchDown.y, -Camera.main.transform.position.z);
        Vector3 m_v3TouchWorldPos  = Camera.main.ScreenToWorldPoint(m_v3TouchScreenPos);
        Vector3 v3dLocalPos        = BattleEnvironmentM.World2LocalPos(m_v3TouchWorldPos);

        m_roomGridTouchDown = RoomMap.FindRoomGrid(v3dLocalPos);
        if (m_roomGridTouchDown == null)
        {
            return;
        }
        m_curClickType = RoomMap.PickupShipBuildType(m_roomGridTouchDown, v3dLocalPos, m_roomGridTouchDown.mPosRoomGrid.Layer);

        CanvasCore buildRoomCoreTouchDown = m_roomGridTouchDown.GetBuildRoom();

        if (TouchMove.g_bSetParaing == true)
        {
            return;
        }

        TouchMove curTouchMove = TouchMoveManager.GetCurTouchMove();

        if (null != curTouchMove)
        {
            //如果当前选中的是房间,新选中的不管是什么都不做变更
            //如果当前选中的不是房间,但是新选中的对象和当前选中的一样则也不变量。
            if (curTouchMove.IsContainsRoomGrid(m_roomGridTouchDown))
            {
                TouchMove selNewTouchMov = PutCanvasM.GetTouchMoveByRoomGrid(m_roomGridTouchDown, m_curClickType);
                if (curTouchMove.MyCore().m_type == ShipBuildType.BuildRoom ||
                    selNewTouchMov != null && selNewTouchMov == curTouchMove)
                {
                    curTouchMove.PlayEditSelectAnimationEnd();                                     //恢复上个房间内陷阱/角色 动画
                    curTouchMove.OnMouseDown();
                    m_bTouchMoveChange = false;
                }
            }
            PutCanvasM.ClearNoLinkList();
        }
        else
        {
            //判断选中物件是否在上次保存失败的物件上,如果是则直接选择
            bool bInNoLinkList = false;
            if (buildRoomCoreTouchDown != null)
            {
                TouchMove selNewTouchMov = PutCanvasM.GetTouchMoveByCore(buildRoomCoreTouchDown);
                if (null == selNewTouchMov)
                {
                    List <CanvasCore> childCores = m_roomGridTouchDown.GetOtherBuild();
                    for (int i = 0; i < childCores.Count; i++)
                    {
                        selNewTouchMov = PutCanvasM.GetTouchMoveByCore(childCores[i]);
                        break;
                    }
                }
                if (null != selNewTouchMov && PutCanvasM.NoLinkListContain(selNewTouchMov.MyCore()))
                {
                    PutCanvasM.ClearNoLinkList();
                    TouchMoveManager.SetCurTouchMove(selNewTouchMov);
                    selNewTouchMov.PlayEditSelectAnimationEnd();                     //恢复上个房间内陷阱/角色 动画
                    selNewTouchMov.OnMouseDown();
                    m_bTouchMoveChange = false;
                    bInNoLinkList      = true;
                }
            }
            if (bInNoLinkList == false)
            {
                PutCanvasM.ClearNoLinkList();
            }
        }
    }
Exemplo n.º 7
0
    /// <summary>
    /// 飞行角色的碰撞处理
    /// </summary>
    public override void ColliderProc(Collision collision)
    {
        //NGUIUtil.DebugLog("flyCollisionAction=" + m_FlyInfo.flyCollisionAction, "red");

        if (m_FlyInfo != null)   //当掉落船外后不再处理碰撞
        {
            if (m_FlyInfo.flyCollisionAction == FlyCollisionAction.DropOutBoat)
            {
                return;
            }
        }
        FlyDir dir = FlyDir.none;

        if (CurrentAction is GridActionCmdFly)
        {
            dir = (CurrentAction as GridActionCmdFly).GetDir();
        }
        else if (CurrentAction is GridActionDophineFly)
        {
            dir = (CurrentAction as GridActionDophineFly).GetDir();
        }
        else if (CurrentAction is FireActionCmd)
        {
            dir = (CurrentAction as FireActionCmd).GetDir();
        }
        if (m_bDolphineFly && (dir == FlyDir.Top || dir == FlyDir.LeftTop || dir == FlyDir.RightTop))
        {
            return;
        }
        Life lifeM = GetCollisionGo(collision);

        if (lifeM == null || lifeM.m_Core.m_Camp == LifeMCamp.ATTACK)
        {
            return;
        }

#if UNITY_EDITOR_LOG
        FileLog.write(m_Owner.SceneID, "ColliderProc  " + collision.gameObject + lifeM.SceneID + ",  " + collision.contacts[0].point + "," + dir);
#endif
        //计算撞击方向
        Vector3 target = collision.contacts[0].point;
        Vector3 start  = m_Owner.m_thisT.position;
        Vector2 HitDir = new Vector2(target.x - start.x, target.y - start.y);

        bool bReleaseSkill = true;
        bReleaseSkill = !m_bDolphineFly;  //海豚顶飞,炮战技能不释放
        bool bApplyDamage = bReleaseSkill;
        if (m_Owner.m_Skill != null)
        {
            if (m_bDolphineFly == false)
            {
                bApplyDamage = m_FlyInfo.bApplyDamage;
            }
            (m_Owner.m_Skill as FireSkill).FlyInfo = m_FlyInfo;
        }
        Vector3 vHitWorldPos = new Vector3(target.x, target.y, target.z);

        HitSound(lifeM, m_Owner);
        HitShakeBoat();
#if UNITY_EDITOR_LOG
        FileLog.write(m_Owner.SceneID, "ColliderProc  " + dir + "," + CurrentAction);
#endif
        FlyCollisionInfo Info = m_Owner.FireTrigger(collision, lifeM, m_Owner, bReleaseSkill, bApplyDamage, m_listCollisionGoID.Count, dir);
        if (Info != null && Info.lifemCollision != null)
        {
            Info.HitDir  = HitDir.x > 0 ? WalkDir.WALKRIGHT : WalkDir.WALKLEFT;
            Info.vhitPos = BattleEnvironmentM.World2LocalPos(target);
            FireCombatOver(Info);
        }
    }