public void MoveRole(RoleModel roleModel)
    {
        if ((!isRunning) || ActionManager.GetIsMoving())
        {
            return;
        }

        Vector3 target, transfer;

        if (roleModel.OnBoat)
        {
            if (boatController.GetBoatModel().OnRight)
            {
                target = DesCoastController.AddRole(roleModel);
            }
            else
            {
                target = SrcCoastController.AddRole(roleModel);
            }

            /* 设置一个中转点使运动轨迹成为折线;下同 */
            if (roleModel.role.transform.localPosition.y > target.y)
            {
                transfer = new Vector3(target.x, roleModel.role.transform.localPosition.y, target.z);
            }
            else
            {
                transfer = new Vector3(roleModel.role.transform.localPosition.x, target.y, target.z);
            }

            ActionManager.MoveRole(roleModel.role, transfer, target, 5);
            roleModel.OnRight = boatController.GetBoatModel().OnRight;
            boatController.RemoveRole(roleModel);
        }
        else
        {
            if (boatController.GetBoatModel().OnRight == roleModel.OnRight)
            {
                if (roleModel.OnRight)
                {
                    DesCoastController.RemoveRole(roleModel);
                }
                else
                {
                    SrcCoastController.RemoveRole(roleModel);
                }
                target = boatController.AddRole(roleModel);
                if (roleModel.role.transform.localPosition.y > target.y)
                {
                    transfer = new Vector3(target.x, roleModel.role.transform.localPosition.y, target.z);
                }
                else
                {
                    transfer = new Vector3(roleModel.role.transform.localPosition.x, target.y, target.z);
                }
                ActionManager.MoveRole(roleModel.role, transfer, target, 5);
            }
        }
    }
示例#2
0
    public void LoadResources()
    {
        SrcCoastController = new CoastController();
        SrcCoastController.CreateCoast("src_coast", PositionModel.src_coast);
        DesCoastController = new CoastController();
        DesCoastController.CreateCoast("des_coast", PositionModel.des_coast);

        boatController = new BoatController();
        boatController.CreateBoat(PositionModel.boat_on_left);

        roleModelControllers = new RoleController[6];
        for (int i = 0; i < 3; i++)
        {
            roleModelControllers[i] = new RoleController();
            roleModelControllers[i].CreateRole(PositionModel.roles[i], 0, i);
        }
        for (int i = 3; i < 6; i++)
        {
            roleModelControllers[i] = new RoleController();
            roleModelControllers[i].CreateRole(PositionModel.roles[i], 1, i);
        }

        foreach (RoleController roleModelController in roleModelControllers)
        {
            roleModelController.GetRoleModel().role.transform.localPosition = SrcCoastController.AddRole(roleModelController.GetRoleModel());
        }

        moveController = new MoveController();

        river = new RiverModel(PositionModel.river);

        isRuning = true;
        time     = 120;
    }
示例#3
0
    public void MoveRole(RoleModel roleModel)
    {
        if ((!isRuning) || moveController.GetIsMoving())
        {
            return;
        }

        if (roleModel.OnBoat)
        {
            if (boatController.GetBoatModel().OnRight)
            {
                moveController.SetMove(DesCoastController.AddRole(roleModel), roleModel.role);
            }
            else
            {
                moveController.SetMove(SrcCoastController.AddRole(roleModel), roleModel.role);
            }
            roleModel.OnRight = boatController.GetBoatModel().OnRight;
            boatController.RemoveRole(roleModel);
        }
        else
        {
            if (boatController.GetBoatModel().OnRight == roleModel.OnRight && (boatController.GetBoatModel().roles[0] == null || boatController.GetBoatModel().roles[1] == null))
            {
                if (roleModel.OnRight)
                {
                    DesCoastController.RemoveRole(roleModel);
                }
                else
                {
                    SrcCoastController.RemoveRole(roleModel);
                }
                moveController.SetMove(boatController.AddRole(roleModel), roleModel.role);
            }
        }
    }