コード例 #1
0
 public override void InteractiveDetection(CharacterInteractiveCpt characterInt)
 {
     if (Input.GetButtonDown(InputInfo.Interactive_E))
     {
         if (GameEventHandler.Instance.GetEventStatus() == EventStatusEnum.EventEnd)
         {
             //先改变人物面向
             if (characterInt.transform.position.x > transform.position.x)
             {
                 mNpcAI.SetCharacterFace(2);
             }
             else
             {
                 mNpcAI.SetCharacterFace(1);
             }
             //获取人物信息
             NpcInfoBean npcInfo = mNpcAI.characterData.npcInfoData;
             GameEventHandler.Instance.EventTriggerForTalk(npcInfo, true);
             //如果角色有问题提示。则取消问号
             mNpcAI.CancelExpression();
         }
     }
 }
コード例 #2
0
    /// <summary>
    /// 刷新场景数据
    /// </summary>
    /// <param name="listData"></param>
    public void RefreshSceneData(List <StoryInfoDetailsBean> listData)
    {
        if (listData == null)
        {
            return;
        }
        if (listStoryTextInfo != null)
        {
            listStoryTextInfo.Clear();
        }
        listStoryTextInfo = null;
        foreach (StoryInfoDetailsBean itemData in listData)
        {
            StoryInfoDetailsBean.StoryInfoDetailsTypeEnum storyInfoDetailsType = itemData.GetStoryInfoDetailsType();
            if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcPosition)
            {
                GameObject objNpc = GetSceneObjByName("character_" + itemData.num);
                BaseNpcAI  npcAI  = null;
                if (objNpc != null)
                {
                    npcAI = objNpc.GetComponent <BaseNpcAI>();
                }

                if (npcAI == null)
                {
                    NpcInfoBean npcInfoBean;
                    if (itemData.npc_id == 0)
                    {
                        npcInfoBean = new NpcInfoBean();
                    }
                    else if (itemData.npc_id == -1)
                    {
                        npcInfoBean = new NpcInfoBean();
                    }
                    else
                    {
                        if (mapNpcInfo.TryGetValue(itemData.npc_id, out NpcInfoBean npcInfo))
                        {
                            npcInfoBean = npcInfo;
                        }
                        else
                        {
                            npcInfoBean = new NpcInfoBean();
                            LogUtil.LogError("创建NPC失败 找不到ID为" + itemData.npc_id + "的NPC信息");
                        }
                    }
                    objNpc = CreateNpc(npcInfoBean.npc_id, new Vector3(itemData.position_x, itemData.position_y), itemData.num);
                    npcAI  = objNpc.GetComponent <BaseNpcAI>();
                }
                npcAI.transform.localPosition = new Vector3(itemData.position_x, itemData.position_y);
                //设置朝向
                npcAI.SetCharacterFace(itemData.face);
            }
            else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcEquip)
            {
                GameObject objNpc = GetSceneObjByName("character_" + itemData.num);
                if (objNpc == null)
                {
                    continue;
                }
                BaseNpcAI npcAI = objNpc.GetComponent <BaseNpcAI>();
                if (npcAI == null)
                {
                    continue;
                }
                SexEnum sex = npcAI.characterData.body.GetSex();
                itemData.GetNpcEquip(sex, out long hatId, out long clothesId, out long shoesId);
                if (hatId != -1)
                {
                    npcAI.characterData.equips.hatTFId = hatId;
                }
                if (clothesId != -1)
                {
                    npcAI.characterData.equips.clothesTFId = clothesId;
                }
                if (shoesId != -1)
                {
                    npcAI.characterData.equips.shoesTFId = shoesId;
                }
                npcAI.SetCharacterData(npcAI.characterData);
            }
            else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.PropPosition)
            {
                GameObject objProp = GetSceneObjByName("prop_" + itemData.num);
                if (objProp == null)
                {
                    GameObject objModel = StoryInfoHandler.Instance.manager.GetStoryPropModelByName(itemData.key_name);
                    objProp      = Instantiate(objModel, StoryInfoHandler.Instance.builderForStory.transform);
                    objProp.name = "prop_" + itemData.num;
                }
                //设置位置和朝向
                objProp.transform.localPosition = new Vector3(itemData.position_x, itemData.position_y);
                Vector3 bodyScale = objProp.transform.localScale;
                switch (itemData.face)
                {
                case 1:
                    bodyScale.x = -1;
                    break;

                case 2:
                    bodyScale.x = 1;
                    break;
                }
                objProp.transform.localScale = bodyScale;
            }
            //如果是对话 查询对话数据
            else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.Talk)
            {
                listStoryTextInfo = textInfoService.QueryDataByMarkId(TextEnum.Story, itemData.text_mark_id);
            }
            else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcDestory)
            {
                int[] numList = StringUtil.SplitBySubstringForArrayInt(itemData.npc_destroy, ',');
                foreach (int num in numList)
                {
                    BaseNpcAI npcAI = CptUtil.GetCptInChildrenByName <BaseNpcAI>(StoryInfoHandler.Instance.builderForStory.gameObject, num + "");
                    DestroyImmediate(npcAI.gameObject);
                }
            }
            else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraPosition)
            {
                Vector3 cameraWorldPosition = StoryInfoHandler.Instance.builderForStory.transform.TransformPoint(new Vector3(itemData.position_x, itemData.position_y, -10));

                GameCameraHandler.Instance.manager.camera2D.Follow             = null;
                GameCameraHandler.Instance.manager.camera2D.transform.position = cameraWorldPosition;
            }
            else if (itemData.type == (int)StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraFollowCharacter)
            {
                BaseNpcAI npcAI = CptUtil.GetCptInChildrenByName <BaseNpcAI>(StoryInfoHandler.Instance.builderForStory.gameObject, "character_" + itemData.num);
                GameCameraHandler.Instance.manager.camera2D.Follow = npcAI.transform;
            }
        }
    }