Exemplo n.º 1
0
    /// <summary>
    /// 初始化Lua
    /// </summary>
    //private void InitLua()
    //{
    //    // TODO LUA需要销毁
    //    L = new LuaState();
    //    L.Start();
    //    // 读取lua文件
    //    L.DoFile( @"D:\project\Project1\GameProject\Assets\Lua\targetSelect.lua");
    //    // 获得lua方法
    //    LFunc = L.GetFunction("SearchTargetWithJson");

    //    // LFunc = L.GetFunction("String");
    //    TestData = L.GetTable("testData");
    //}


    /// <summary>
    /// 单元移动
    /// </summary>
    private void MemberMove()
    {
        bool isTouchTopBorder    = false;
        bool isTouchBottomBorder = false;
        bool isTouchRightBorder  = false;
        bool isTouchLeftBorder   = false;

        foreach (var member in MemberList.List)
        {
            var memberData = member.AllData.MemberData;
            // 判断是否碰到边框
            isTouchTopBorder    = member.X + memberData.SpaceSet >= MapPlane.transform.localPosition.x + MapWidth * 0.5f;
            isTouchBottomBorder = member.X <= MapPlane.transform.localPosition.x - MapWidth * 0.5f;
            isTouchRightBorder  = member.Y + memberData.SpaceSet >= MapPlane.transform.localPosition.z + MapHeight * 0.5f;
            isTouchLeftBorder   = member.Y <= MapPlane.transform.localPosition.z - MapHeight * 0.5f;

            if (isTouchTopBorder || isTouchBottomBorder)
            {
                // X折射
                member.Direction = new Vector3((isTouchTopBorder ? -1 : 1) * Math.Abs(member.Direction.x), 0, member.Direction.z);
            }
            if (isTouchRightBorder || isTouchLeftBorder)
            {
                // Y折射
                member.Direction = new Vector3(member.Direction.x, 0, (isTouchRightBorder ? -1 : 1) * Math.Abs(member.Direction.z));
            }
            // 按照方向移动
            var step = member.Direction.normalized * memberData.MoveSpeed * Time.deltaTime;
            member.X += step.x;
            member.Y += step.z;
        }
        MemberList.RebuildQuadTree();
    }