Ejemplo n.º 1
0
        void unequia(RoleController roleController, string id)
        {
            GameObject         giveUpWeaponObject = GameObjectManager.Instance.Create(id);
            DropItemController dropItemController = giveUpWeaponObject.GetComponent <DropItemController>();

            SceneManager.Instance.DropItemEnterSceneWithLocalPosition(dropItemController, roleController.SceneId,
                                                                      roleController.gameObject.transform.localPosition + new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f),
                                                                                                                                      UnityEngine.Random.Range(1.0f, 1.5f), UnityEngine.Random.Range(-0.5f, 0.5f)));
        }
Ejemplo n.º 2
0
        public void DropEquipByPlace(EquipPlaceType equipPlaceType, string sceneId, Vector3 position)
        {
            EquipData equipData = GetEquipByPlace(equipPlaceType);

            if (equipData != null && !string.IsNullOrWhiteSpace(equipData.id))
            {
                string equipId = equipData.id;
                if (GameObjectManager.Instance.GetPrefab(equipId) != null)
                {
                    // 丢下身上的装备 add by TangJian 2017/09/01 21:41:20
                    GameObject         giveUpItem         = GameObjectManager.Instance.Spawn(equipId);
                    DropItemController dropItemController = giveUpItem.GetComponent <DropItemController>();
                    SceneManager.Instance.DropItemEnterSceneWithWorldPosition(dropItemController, sceneId,
                                                                              position + new Vector3(Random.Range(-0.5f, 0.5f), Random.Range(1.0f, 1.5f),
                                                                                                     Random.Range(-0.5f, 0.5f)));
                }
            }
        }
Ejemplo n.º 3
0
 void drop()
 {
     foreach (var item in dropItems)
     {
         GameObject go = GameObjectManager.Instance.Create(item);
         if (go != null)
         {
             DropItemController dropItemController = go.GetComponent <DropItemController>();
             SceneManager.Instance.DropItemEnterSceneWithWorldPosition(dropItemController, SceneId, gameObject.transform.position + new Vector3(0, 1, 0));
             Rigidbody rigidbody = go.GetComponent <Rigidbody>();
             if (rigidbody != null)
             {
                 float min = 100;
                 float max = 200;
                 rigidbody.AddForce(new Vector3(Random.Range(-max, max), Random.Range(min, max), Random.Range(-max, max)));
             }
         }
     }
     Destroy(gameObject, 3);
 }
Ejemplo n.º 4
0
        public void CreateItem(string id, bool randomPos = false, bool rotating = false)
        {
            var player = GameManager.Instance.Player1;

            if (player)
            {
                GameObject         gameObject         = GameObjectManager.Instance.Create(id);
                DropItemController dropItemController = gameObject.GetComponent <DropItemController>();
                if (gameObject != null)
                {
                    var pos = player.transform.localPosition + new Vector3(0, 5, 0);
                    if (randomPos)
                    {
                        pos += new Vector3(Random.Range(-5, 5), Random.Range(-5, 5), Random.Range(-5, 5));
                    }
                    SceneManager.Instance.DropItemEnterSceneWithLocalPosition(dropItemController, player.SceneId, pos);
                    if (rotating)
                    {
                        gameObject.transform.eulerAngles = new Vector3(0, 0, Random.Range(0, 360));
                    }
                }
            }
        }
Ejemplo n.º 5
0
        public override void Interact()
        {
            TriggerController selfTriggerController  = gameObject.GetChild("InteractiveCube").GetComponent <TriggerController>();
            TriggerController otherTriggerController = selfTriggerController.GetFirstKeepingTriggerController();

            if (selfTriggerController != null && otherTriggerController != null && otherTriggerController.ITriggerDelegate != null)
            {
                GameObject interactObject = otherTriggerController.ITriggerDelegate.GetGameObject();

                if (interactObject.tag == "NPC")
                {
                    RolePromptController rolePromptController = GetComponentInChildren <RolePromptController>();
                    rolePromptController.killtalk();
                    OnInteractAction(interactObject);
                    AnimManager.Instance.PrintBubble("[color=#FFFFFF,#000000]fgtdfg[/color]", interactObject);
                }
                else if (interactObject.tag == "Ladder")
                {
                    LadderController ladderController = interactObject.GetComponent <LadderController>();
                    BoxCollider      boxCollider      = otherTriggerController.gameObject.GetComponent <BoxCollider>();
                    Bounds           bou = boxCollider.bounds;
                    gameObject.layer = LayerMask.NameToLayer("Default");
                    if ((interactObject.transform.position.y + bou.center.y + ((bou.size.y / 2) - 1.6f)) < transform.position.y)
                    {
                        switch (ladderController.laddertype)
                        {
                        case laddertype.Left:
                            transform.position = new Vector3(interactObject.transform.position.x + CharacterController.radius, transform.position.y - 1.6f, interactObject.transform.position.z);
                            break;

                        case laddertype.Right:
                            transform.position = new Vector3(interactObject.transform.position.x - CharacterController.radius, transform.position.y - 1.6f, interactObject.transform.position.z);
                            break;

                        case laddertype.Center:
                            transform.position = new Vector3(interactObject.transform.position.x, transform.position.y - 1.6f, interactObject.transform.position.z - 0.1f);
                            break;
                        }
                    }
                    else
                    {
                        switch (ladderController.laddertype)
                        {
                        case laddertype.Left:
                            transform.position = new Vector3(interactObject.transform.position.x + CharacterController.radius, transform.position.y, interactObject.transform.position.z);
                            break;

                        case laddertype.Right:
                            transform.position = new Vector3(interactObject.transform.position.x - CharacterController.radius, transform.position.y, interactObject.transform.position.z);
                            break;

                        case laddertype.Center:
                            transform.position = new Vector3(interactObject.transform.position.x, transform.position.y, interactObject.transform.position.z - 0.1f);
                            break;
                        }
                    }
                    if (animatorParams.ContainsKey("ladder_type"))
                    {
                        _animator.SetInteger("ladder_type", (int)ladderController.laddertype);
                    }
                    if (animatorParams.ContainsKey("start_climb_ladder"))
                    {
                        _animator.SetBool("start_climb_ladder", true);
                    }
                }
                else if (interactObject.GetComponent <IInteractable>() != null)
                {
                    IInteractable interactable = interactObject.GetComponent <IInteractable>();
                    if (interactable.CanInteract())
                    {
                        interactable.Interact();
                    }
                }
                else if (interactObject.GetComponent <PortalController>())
                {
                    PortalController portalController = interactObject.GetComponent <PortalController>();
                    if (portalController)
                    {
                        this.OpenPortal(portalController);
                    }
                }
                else if (interactObject.GetComponent <FenceDoorController>())
                {
                    FenceDoorController fenceDoorController = interactObject.GetComponent <FenceDoorController>();
                    if (fenceDoorController)
                    {
                        fenceDoorController.OpenPortal();
                    }
                }
                else
                {
                    if (interactObject != null && interactObject.Equals(null) == false)
                    {
                        DropItemController dropItemController = interactObject.GetComponent <DropItemController>();
                        if (dropItemController != null)
                        {
                            var itemData = ItemManager.Instance.getItemDataById <ItemData>(dropItemController.ItemId);
                            GameManager.Instance.PickupTips("Textures/Icon/" + itemData.icon, itemData.name, itemData.count.ToString());
                            switch (itemData.itemType)
                            {
                            case ItemType.Consumable:
                                Debug.Log("捡到消耗品 id = " + itemData.id);

                                Destroy(interactObject);
                                ConsumableData consumableData = ItemManager.Instance.getItemDataById <ConsumableData>(itemData.id);
                                if (consumableData != null)
                                {
                                    switch (consumableData.consumableUseType)
                                    {
                                    case ConsumableUseType.deposit:
                                        RoleData.AddConsumableItem(itemData.id, itemData.count);
                                        PickupConsumable();
                                        break;

                                    case ConsumableUseType.ImmediateUse:
                                        BuffController.AddBuff(consumableData.buffId);
                                        break;
                                    }
                                }
                                break;

                            case ItemType.Other:
                                RoleData.OtherItemList.Add(itemData);
                                dropItemController.RemoveSelf();
                                break;

                            case ItemType.Equip:
                                var weaponData = ItemManager.Instance.getItemDataById <WeaponData>(dropItemController.ItemId);
                                if (weaponData != null)
                                {
                                    this.JuageEquipPossessType(weaponData);
                                }
                                else
                                {
                                    var equipData = ItemManager.Instance.getItemDataById <EquipData>(itemData.id);
                                    RoleData.EquipData.UseEquip(equipData, interactObject.transform.localPosition + new Vector3(Random.Range(-0.5f, 0.5f), Random.Range(1.0f, 1.5f), Random.Range(-0.5f, 0.5f)));
                                }
                                Destroy(interactObject);
                                break;
                            }
                        }
                        else
                        {
                            var interactive = interactObject.GetComponent <ITriggerDelegate>();
                            if (interactive != null)
                            {
                                Event evt = new Event();
                                evt.Type = EventType.Interact;
                                evt.Data = GetGameObject();
                                interactive.OnEvent(evt);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 6
0
 public void DropItemEnterWithLocalPosition(DropItemController dropItemController, Vector3 localPosition)
 {
     ObjectEnterWithLocalPosition(dropItemController, localPosition);
 }
Ejemplo n.º 7
0
        void Prompt()
        {
            selfTriggerController = parent.GetComponentInChildren <TriggerController>();

            valueMonitorPool.Clear();
            valueMonitorPool.AddMonitor(() =>
            {
                otherTriggerController = selfTriggerController.GetFirstKeepingTriggerController();

                if (otherTriggerController != null)
                {
                    DoorController doorController               = otherTriggerController.ITriggerDelegate as DoorController;
                    NpcController npcController                 = otherTriggerController.ITriggerDelegate as NpcController;
                    TreasureBoxController treasureBox           = otherTriggerController.ITriggerDelegate as TreasureBoxController;
                    JoystickController joystickController       = otherTriggerController.ITriggerDelegate as JoystickController;
                    DropItemController dropItemController       = otherTriggerController.ITriggerDelegate as DropItemController;
                    MagicPortalController magicPortalController =
                        otherTriggerController.ITriggerDelegate as MagicPortalController;

                    if (doorController != null)
                    {
                        if (doorController.IsClosed())
                        {
                            return(0);
                        }
                        else
                        {
                            return(1);
                        }
                    }
                    else if (npcController != null)
                    {
                        return(2);
                    }
                    else if (treasureBox != null)
                    {
                        if (treasureBox.IsOpened())
                        {
                            return(3);
                        }
                        else
                        {
                            return(4);
                        }
                    }
                    else if (joystickController != null)
                    {
                        return(5);
                    }
                    else if (dropItemController != null)
                    {
                        return(6);
                    }
                    else if (magicPortalController != null)
                    {
                        return(7);
                    }
                }
                return(-1);
            }, (int from, int to) =>
            {
                if (otherTriggerController != null)
                {
                    GameObject interactObject = otherTriggerController.ITriggerDelegate.GetGameObject();
                    if (interactObject != null)
                    {
                        DoorController doorController               = interactObject.GetComponent <DoorController>();
                        NpcController npcController                 = interactObject.GetComponent <NpcController>();
                        TreasureBoxController treasureBox           = interactObject.GetComponent <TreasureBoxController>();
                        JoystickController joystickController       = interactObject.GetComponent <JoystickController>();
                        DropItemController dropItemController       = interactObject.GetComponent <DropItemController>();
                        MagicPortalController magicPortalController = interactObject.GetComponent <MagicPortalController>();

                        if (doorController != null)
                        {
                            if (doorController.IsClosed())
                            {
                                ShowPrompt("ui://UI/key");
                            }
                            else
                            {
                                HidePrompt();
                            }
                        }
                        else if (npcController != null)
                        {
                            ShowPrompt("ui://UI/talkmark");
                        }
                        else if (treasureBox != null)
                        {
                            if (treasureBox.IsOpened())
                            {
                                HidePrompt();
                            }
                            else
                            {
                                ShowPrompt("ui://UI/Exclamatory mark");
                            }
                        }
                        else if (joystickController)
                        {
                            ShowPrompt("ui://UI/key");
                        }
                        else if (dropItemController != null)
                        {
                            if (dropItemController.ItemData.pickUpMethod == PickUpMethod.Interact)
                            {
                                ShowPrompt("ui://UI/Exclamatory mark");
                            }
                        }
                        else if (magicPortalController != null)
                        {
                            ShowPrompt("ui://UI/Exclamatory mark");
                        }
                        else
                        {
                            HidePrompt();
                        }
                    }
                }
                else
                {
                    HidePrompt();
                }
            });
        }
Ejemplo n.º 8
0
        public async Task<SceneController> CreateScene(SceneData sceneData, int difficultyLevel = 1)
        {
            // 新建场景
            GameObject prefab = await AssetManager.LoadAssetAsync<GameObject>("Assets/Resources_moved/Prefabs/Scenes/" + sceneData.rawSceneId+".prefab");
            Debug.Assert(prefab != null, "找不到场景预制体:" + "Prefabs / Scenes / " + sceneData.rawSceneId);
            GameObject scene = Instantiate(prefab);

            // Debug.Log(" 预制体id " + sceneData.rawSceneId);
            scene.transform.parent = SceneRoot.transform;
            scene.transform.localPosition = GetOnlyScenePosition();
            scene.name = sceneData.sceneId;
            SceneController sceneController = scene.GetComponent<SceneController>();
            sceneController.SceneData = sceneData;

            {
                // 添加怪物 add by TangJian 2017/08/03 21:35:51
                {
                    foreach (var roleData in sceneData.roleDatas)
                    {
                        roleData.locationData.position = sceneController.GetAreaRandomPosition(roleData.locationData.areaId);
                        roleData.difficultyLevel = difficultyLevel;
                        sceneController.AddRole(roleData);
                    }
                }

                // 添加物品 add by TangJian 2017/08/22 19:45:51
                {
                    foreach (var itemData in sceneData.itemDatas)
                    {
                        var item = GameObjectManager.Instance.Create(itemData.id);
                        DropItemController dropItemController = item.GetComponent<DropItemController>();
                        itemData.position = sceneController.GetAreaRandomPosition("MonsterAreas");
                        sceneController.DropItemEnterWithLocalPosition(dropItemController, itemData.position);
                    }
                }

                // 添加放置物体 add by TangJian 2018/01/23 15:52:08
                {
                    foreach (var placementData in sceneData.PlacementDatas)
                    {
                        var placementObject = GameObjectManager.Instance.Create(placementData.id);
                        SceneObjectController sceneObjectController = placementObject.GetComponent<SceneObjectController>();
                        
                        PlacementController treasureBoxController = placementObject.GetComponent<PlacementController>();
                        treasureBoxController.Placementdata = placementData;

                        placementData.position = sceneController.GetAreaRandomPosition("MonsterAreas");
                        sceneController.PlacementEnterWithLocalPosition(sceneObjectController, placementData.position);

                        ScenePlacementComponent sceneComponent = treasureBoxController.gameObject.GetComponent<ScenePlacementComponent>();
                        if (sceneComponent != null)
                        {
                            sceneComponent.GridPos = placementObject.transform.localPosition;
                        }
                    }
                }

                // 设置门数据 add by TangJian 2018/12/26 16:00
                for (int i = 0; i < sceneData.portalDatas.Count; i++)
                {
                    PortalData portalData = sceneData.portalDatas[i];

                    Transform portalTransform = scene.transform.Find("Portals/" + portalData.id);
                    Debug.Assert(portalTransform != null, "找不到门: " + sceneData.sceneId + ":" + portalData.id);

                    PortalController portalController = portalTransform.GetComponent<PortalController>();
                    portalController.PortalData = portalData;
                    portalController.State = 1;
                }

                // 为丢失NavMeshDataBuild
                {
                    foreach(var item in scene.GetComponents<UnityEngine.AI.NavMeshSurface>())
                    {
                        if (item.navMeshData == null)
                        {
                            item.BuildNavMesh();
                        }
                    }
                }
            }

            // 初始化
            // sceneController.InitData();


            return sceneController;
        }
Ejemplo n.º 9
0
 private void showdropitem()
 {
     valueMonitorPool.AddMonitor((Func <TriggerController>)(() =>
     {
         GameObject player = GameObject.Find("Player1");
         TriggerController selfTriggerController = player.GetComponentInChildren <TriggerController>();
         otherTriggerController = selfTriggerController.GetFirstKeepingTriggerController();
         return(otherTriggerController);
     }), (TriggerController from, TriggerController to) =>
     {
         if (Typedown)
         {
             if (otherTriggerController != null)
             {
                 GameObject interactObject = otherTriggerController.ITriggerDelegate.GetGameObject();
                 if (interactObject != null)
                 {
                     DropItemController dropItemController = interactObject.GetComponent <DropItemController>();
                     DoorController doorController         = interactObject.GetComponent <DoorController>();
                     if (dropItemController != null)
                     {
                         var itemData = ItemManager.Instance.getItemDataById <ItemData>(dropItemController.ItemId);
                         if (itemData != null)
                         {
                             GameObject player             = GameObject.Find("Player1");
                             RoleController roleController = player.GetComponent <RoleController>();
                             if (itemData is WeaponData)
                             {
                                 AttributeShow <WeaponData>(itemData as EquipData);
                                 ShowRoleInfodown();
                             }
                             else if (itemData is ArmorData)
                             {
                                 AttributeShow <ArmorData>(itemData as EquipData);
                                 ShowRoleInfodown();
                             }
                             else if (itemData is DecorationData)//现阶段物品掉落使用
                             {
                                 DecorationData RoleDecorationData;
                                 AttributeShow <DecorationData>(itemData as EquipData);
                                 ShowRoleInfodown();
                             }
                             else
                             {
                                 HideRoleInfodown();
                             }
                         }
                     }
                     else if (doorController != null)
                     {
                         Debug.Log("door");
                     }
                 }
             }
             else
             {
                 HideRoleInfodown();
             }
         }
     });
 }