public FloatFontNode(GameObject entity,Value Ins) : base(Ins) { liveTime = 0.0f; m_Entity = entity; m_Property = entity.GetComponent<CreatureProperty>(); }
/// <summary> /// 重置 /// </summary> public void Restore() { CacheSkin(); //要在他们之前清理,因为动态脚本是依赖静态脚本的 DestroyDynamicCommopnent(); if (skinControl) { skinControl.Clear(); skinControl = null; } if (m_property) { m_property.Restore(); m_property = null; } if (m_stateMachine) { m_stateMachine.Clear(); m_stateMachine.ResetAllMembers(); m_stateMachine = null; } if (m_LightEffectManager) { m_LightEffectManager.Clear(); m_LightEffectManager.Restore(); m_LightEffectManager = null; } m_SkillCtrl = null; UBloodManager.Instance.DestroyBlood(ID); commands.Clear(); //commands = null; }
public bool setData(ChatBubbleWndView view, uint uid, SChatMessageInfo info) { base.setData(info); m_View = view; m_UID = uid; m_Pdbid = info.senderPdbid; // 实体气泡,则更新位置 m_EntityView = EntityFactory.getEntityViewByID((int)uid); // uid获取失败,则使用pdbid if (m_EntityView == null) { m_EntityView = getEntityViewByPdbid(info.senderPdbid); } if (m_EntityView == null || !m_EntityView.IsValid) { return(false); } m_EntryProperty = m_EntityView.GetComponent <CreatureProperty>(); if (m_EntryProperty == null) { return(false); } // 设置初始位置 updatePosition(); return(true); }
public override void Clear() { base.Init(); m_View = null; m_UID = 0; m_EntityView = null; m_EntryProperty = null; }
public void Clear() { isBeCached = false; if (m_MainAnimator) { m_MainAnimator.runtimeAnimatorController = orginalAnimatorController; } m_nSkinID = -1; m_SkinObj = null; m_SkinObj_B = null; m_SkinObj_A = null; m_MainAnimator = null; m_AnimatorB = null; m_bipedIKAnimator = null; m_creatureProperty = null; m_ReferencedSkinCtrl = null; m_SkinnedMeshRenderList.Clear(); m_MeshRenderList.Clear(); m_AllRenders.Clear(); m_cameraProperty = null; m_characterController = null; m_entitySkinConfig = null; if (m_playEntityStaticEffect) { m_playEntityStaticEffect.Clear(); } if (m_switchEffectWithHeroDistance) { m_switchEffectWithHeroDistance.Clear(); } m_playEntityStaticEffect = null; m_switchEffectWithHeroDistance = null; m_sidekickEntity = null; m_SkinDataObj = null; foreach (RenderVisibleHelper vis in m_VisibleHelperList) { vis.hostSkin = null; var temp1 = vis; ResNode.DestroyRes(ref temp1); } ResNode.DestroyRes(ref m_bindEffect_A); ResNode.DestroyRes(ref m_bindEffect_B); ResNode.DestroyRes(ref m_bindSound); ResNode.DestroyRes(ref m_overrideController); m_VisibleHelperList.Clear(); ResNode.DestroyRes(ref m_characterShadow); ClearAlpha(); ClearBonesMap(); m_isLoadFinish = false; }
public void SetCreateRoomViewVisible(bool bShow) { this.gameObject.SetActive(bShow); if (bShow && EntityFactory.MainHeroView != null) { CreatureProperty property = EntityFactory.MainHeroView.Property; if (property != null) { RoomNameText.text = property.CreatureName; } } }
private void ChangeCreaturePropety() { CreatureProperty srccp = SkinControl.CurrentSkinInstance.creatureProperty; if (!srccp) { return; } checkPosition = srccp.checkPosition; creaturePropety.Copy(srccp); }
private void UpdateTransform() { SoldierCamera soldierCam = SoldierCamera.MainInstance <SoldierCamera>(); if (!m_bEnable || EntityView.isNullOrEmpty(m_Entity) || !m_BillBoard || !soldierCam || !soldierCam.CurrentCamera) { return; } CreatureProperty pero = m_Entity.Property; if (!pero) { return; } //计算Y偏移值 float offsetY = m_BillBoard.HeightInMeter * 0.2f + pero.CreatureHeightInMeters + pero.BloodYOffset; m_BillBoard.transform.localPosition = new Vector3(0, offsetY, 0); //算出相机到实体的距离 float hideInDis = pero.TopInfoHideInDistance; //上帝视野要多加 if (soldierCam.InGodViewMode) { hideInDis += UBloodManager.Instance.extendHideDistanceInGodView; } Vector3 camPos = soldierCam.CurrentCamera.transform.position; Vector3 billBoardPos = m_BillBoard.transform.position; camPos.y = billBoardPos.y; float dis = (camPos - billBoardPos).sqrMagnitude; if (dis > hideInDis * hideInDis)//距离已经超过了实体头顶信息隐藏距离,隐藏 { m_IsOutOfVisibleDistance = true; UpdateVisible(); return; } else { if (m_IsOutOfVisibleDistance) { m_IsOutOfVisibleDistance = false; UpdateVisible(); } } }
public void Clear() { fontFrame.localScale = Vector3.one; fontFrame.anchoredPosition = Vector2.zero; m_FontVal = null; liveTime = 0; timer = 0; m_Entity = null; m_Property = null; m_enable = false; m_Sequence = null; m_Anim = null; m_type = WarFloatFontType.Invalid; }
private void UpdateTransform() { if (!m_Enable || EntityView.isNullOrEmpty(m_Entity) || !m_BillBoard) { return; } CreatureProperty pero = m_Entity.Property; if (!pero) { return; } //Vector3 off = Vector3.zero; //float RealY = pero.CreatureHeightInMeters; //off.y = RealY; //off.y += pero.TopNameYOffset * m_BillBoard.PixelToMeterScale; //m_BillBoard.transform.localPosition = off; float offsetY = m_BillBoard.HeightInMeter * 0.2f + pero.CreatureHeightInMeters + pero.TopNameYOffset; m_BillBoard.transform.localPosition = new Vector3(0, offsetY, 0); float dis = 0; if (null != Initialize.Instance.SoliderTargetGO) { Vector3 camPos = Initialize.Instance.SoliderTargetGO.transform.position; Vector3 billBoardPos = m_BillBoard.transform.position; camPos.y = billBoardPos.y; dis = (camPos - billBoardPos).sqrMagnitude; } if (dis > hideInDis * hideInDis)//距离超过hideinDis,隐藏 { m_IsOutOfVisibleDistance = true; UpdateVisible(); return; } else { if (m_IsOutOfVisibleDistance) { m_IsOutOfVisibleDistance = false; UpdateVisible(); } } }
public void Init(GameObject entry, int id, string text, Color col) { lastpixelPos = Vector3.zero; m_entry = entry; m_ID = id; isHero = id == EntityFactory.MainHeroID; if (entry) { m_EntryProperty = m_entry.GetComponent <CreatureProperty>(); } if (m_Instance != null) { m_Instance.GetMember("textField", ref m_TextField); } SetText(text); SetColor(col); }
public override bool Init(IUIWnd wnd) { float offset = 0; creatureProperty = EntityFactory.MainHero.GetComponent <CreatureProperty>(); if (creatureProperty) { offset = creatureProperty.CreatureBoundingRad.y * AutoMoveEffectYPosOffsetBase; } Vector2 tmpAnchoredPos = AutoMove.rectTransform.anchoredPosition; tmpAnchoredPos.y += offset; AutoMove.rectTransform.anchoredPosition = tmpAnchoredPos; return(base.Init(wnd)); }
public void Update() { if (m_follower != null) { Camera.main.gameObject.transform.position = Vector3.zero; CreatureProperty backup = new CreatureProperty(); int oldDmg = m_follower.WeaponHolder.MainWeapon.GetDamage(m_follower.m_creatureProperty, m_follower.WeaponHolder.MainWeapon.Evolution-1); int newDmg = m_follower.WeaponHolder.MainWeapon.Damage; m_oldEvolution.Text.text = (m_follower.WeaponHolder.MainWeapon.Evolution-1).ToString(); m_newEvolution.Text.text = m_follower.WeaponHolder.MainWeapon.Evolution.ToString(); m_oldDamage.Text.text = oldDmg.ToString(); m_newDamage.Text.text = newDmg.ToString(); return; } }
public void Init(int id, GameObject host, int cam, ENTITY_TYPE bt) { lastpixelPos = Vector3.zero; m_entry = host; m_ID = id; m_TempValue = 0; m_level = 1; isHero = id == EntityFactory.MainHeroID; if (host) { m_EntryProperty = host.GetComponent <CreatureProperty>(); } bloodType = bt; SetCamType(cam); setPrafabPer(); nColor = GameLogicAPI.getCanseckillHpColor(getMonsterSchemeId()); }
public void ShowOfCrownPage() { CrownPageItemData pageData = LogicDataCenter.crownPageDataManager.curPageItemData; if (pageData == null) { return; } CreatureProperty Property = EntityFactory.MainHeroView.Property; if (Property == null) { return; } ChatSubItemText_CrownGemstoneInfo.ShareToInputField(Property.CreatureName, pageData.nFaceValue, pageData.nPowerValue, Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_ID)); }
private static bool CheckMonsterSkin(Skin skin) { if (skin.bChecked) { return(skin.CheckedReslut); } if (null == skin.ResSkinObj || !skin.ResSkinObj.IsValid()) { skin.bChecked = true; skin.CheckedReslut = false; return(false); } skin.SkinCheckObj = skin.ResSkinObj.InstanceMainRes(); if (!skin.SkinCheckObj) { skin.bChecked = true; skin.CheckedReslut = false; Debug.LogWarning("CheckMonsterSkin:skin.SkinObj 为 null!!"); return(false); } if (skin.SkinType != ENTITY_TYPE.TYPE_MONSTER) { skin.bChecked = true; skin.CheckedReslut = false; skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj); skin.SkinCheckObj = null; Debug.LogWarning("皮肤错误:" + "类型与皮肤类型不一致" + "ID:" + skin.nSkinID + "," + "目标类型" + skin.SkinType.ToString() + ",需要类型:" + ENTITY_TYPE.TYPE_MONSTER.ToString() + ",请请[--策划--]检查配置文件"); return(false); } GameObject go = skin.SkinCheckObj; //先检查skinnedmeshrender,对于animator来说,如果skinnedmeshrender丢失的话,打包的时候会崩溃 //所以要检查每一个预制体的skinned是否正常 SkinnedMeshRenderer[] allSkinneds = go.GetComponentsInChildren <SkinnedMeshRenderer>(true); foreach (SkinnedMeshRenderer sk in allSkinneds) { if (!sk.sharedMesh) { skin.bChecked = true; skin.CheckedReslut = false; skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj); skin.SkinCheckObj = null; Debug.LogWarning("ID:" + skin.nSkinID + ",名字:" + go.name + "丢失mesh,请[策划]检查资源"); return(false); } } Transform SkinDataTransform = go.transform.FindChild("SkinDataObj"); GameObject SkinDataObj = null; if (null != SkinDataTransform) { SkinDataObj = SkinDataTransform.gameObject; } else { skin.bChecked = true; skin.CheckedReslut = false; skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj); skin.SkinCheckObj = null; Debug.LogWarning("皮肤错误:" + "对应皮肤预制体找不到SkinDataObj" + "ID:" + skin.nSkinID + ",名字:" + go.name + "请请[--策划--]检查预制体!"); return(false); } CreatureProperty cp = SkinDataObj.GetComponent <CreatureProperty>(); if (!cp) { skin.bChecked = true; skin.CheckedReslut = false; skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj); skin.SkinCheckObj = null; Debug.LogWarning("皮肤错误:" + "对应的皮肤上的SkinDataObj没有CreatureProperty组件,ID:" + skin.nSkinID + ",名字:" + go.name + ",请请[--策划--]在Unity中检查对应的皮肤预制"); return(false); } MonsterSkinConfig msp = SkinDataObj.GetComponent <MonsterSkinConfig>(); if (!msp) { skin.bChecked = true; skin.CheckedReslut = false; skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj); skin.SkinCheckObj = null; Debug.LogWarning("皮肤错误:" + "对应的皮肤上的SkinDataObj没有MonsterSkinConfig组件,ID:" + skin.nSkinID + ",名字:" + go.name + ",请请[--策划--]在Unity中检查对应的皮肤预制"); return(false); } skin.skinConfig = msp; Animator HostAnimator = null; if (!skin.isStaticSkin) { HostAnimator = go.GetComponent <Animator>(); if (!HostAnimator) { skin.bChecked = true; skin.CheckedReslut = false; skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj); skin.SkinCheckObj = null; Debug.LogWarning("皮肤错误:" + "对应的皮肤上的MonsterStateMachineParams的HostAnimator成员为null,ID:" + skin.nSkinID + ",名字:" + go.name + ",请请[--策划--]在Unity中检查对应的皮肤预制"); return(false); } if (HostAnimator.runtimeAnimatorController == null || HostAnimator.avatar == null) { skin.bChecked = true; skin.CheckedReslut = false; skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj); skin.SkinCheckObj = null; Debug.LogWarning("皮肤错误:" + "对应的皮肤上的Animator中Controller或者avator为null,ID:" + skin.nSkinID + ",名字:" + go.name + ",请请[--策划--]在Unity中检查对应的皮肤预制"); return(false); } } //Editor模式下检查资源 if (Application.isEditor) { SkinnedMeshRenderer[] renders = skin.SkinCheckObj.GetComponentsInChildren <SkinnedMeshRenderer>(); foreach (SkinnedMeshRenderer r in renders) { if (!r.sharedMesh) { Debug.LogWarning(skin.ResSkinObj.AssetName + "Mesh资源丢失!请请[--策划--]检查资源或预制体"); } if (!r.sharedMaterial) { Debug.LogWarning(skin.ResSkinObj.AssetName + "材质资源丢失!请请[--策划--]检查资源或预制体"); } } } skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj); skin.bChecked = true; skin.CheckedReslut = true; skin.SkinCheckObj = null; return(true); }
/// <summary> /// 绑定MONSTER组件 /// </summary> /// <returns></returns> private bool BindMonsterComponent() { CreatureProperty property = m_gameObject.GetComponent <CreatureProperty>(); BaseStateMachine fsm = m_gameObject.GetComponent <BaseStateMachine>(); bool isWard = false; if (0 != (InitMaskFlag & (int)ENTITY_MASKFLAG.MASKFLAG_AS_WARD)) { isWard = true; } if (property == null || fsm == null) { Trace.Log("entity_bindMonsterComponent failed. CreatureProperty==null or BaseStateMachine == null !!!"); return(false); } fsm.isNotAttack = false; if (0 != (InitMaskFlag & (int)ENTITY_MASKFLAG.MASKFLAG_NOT_SELECT) && !isWard) { m_gameObject.layer = LayerMask.NameToLayer(Config.LayerNeutrality); fsm.baseLayer = LayerMask.NameToLayer(Config.LayerNeutrality); fsm.pickableCount = 1; //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>(); //if (screenCastLayer != null) //{ // screenCastLayer.setLayer(Config.LayerNeutrality); //} } else if (0 != (InitMaskFlag & (int)ENTITY_MASKFLAG.MASKFLAG_NOT_ATTACK)) { m_gameObject.layer = LayerMask.NameToLayer(Config.LayerMonsterEnemy); fsm.baseLayer = LayerMask.NameToLayer(Config.LayerMonsterEnemy); fsm.pickableCount = 1; fsm.isNotAttack = true; } else { switch (CampFlag) { case CampFlag.CampFlag_Friend: { string layerName = Config.LayerMonsterFriend; if (isWard) { layerName = Config.LayerWard_Friend; } m_gameObject.layer = LayerMask.NameToLayer(layerName); fsm.baseLayer = LayerMask.NameToLayer(layerName); fsm.pickableCount = 1; //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>(); //if (screenCastLayer != null) //{ // //screenCastLayer.setLayer(Config.LayerScreenRaycastFriend); // screenCastLayer.setLayer(layerName); //} } break; case CampFlag.CampFlag_Enemy: { string layerName = Config.LayerMonsterEnemy; if (isWard) { layerName = Config.LayerWard_Enemy; } m_gameObject.layer = LayerMask.NameToLayer(layerName); fsm.baseLayer = LayerMask.NameToLayer(layerName); fsm.pickableCount = 1; //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>(); //if (screenCastLayer != null) //{ // //screenCastLayer.setLayer(Config.LayerScreenRaycastEnemy); // screenCastLayer.setLayer(layerName); //} } break; default: break; } } return(true); }
/// <summary> /// 绑定一般角色组件 /// </summary> /// <returns></returns> private bool BindPlayerComponent() { //Trace.Log("BindPlayerComponent() -> Player, id=" + ID.ToString()); CreatureProperty property = m_gameObject.GetComponent <CreatureProperty>(); BaseStateMachine fsm = m_gameObject.GetComponent <BaseStateMachine>(); if (property == null || fsm == null) { Trace.Log("entity_bindPlayerComponent failed. CreatureProperty==null or BaseStateMachine == null !!!"); return(false); } fsm.isNotAttack = false; if (0 != (InitMaskFlag & (int)ENTITY_MASKFLAG.MASKFLAG_NOT_SELECT)) { m_gameObject.layer = LayerMask.NameToLayer(Config.LayerNeutrality); fsm.baseLayer = LayerMask.NameToLayer(Config.LayerNeutrality); fsm.pickableCount = 1; //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>(); //if (screenCastLayer != null) //{ // screenCastLayer.setLayer(Config.LayerNeutrality); //} } else { switch (CampFlag) { case CampFlag.CampFlag_Friend: { m_gameObject.layer = LayerMask.NameToLayer(Config.LayerPlayerFriend); fsm.baseLayer = LayerMask.NameToLayer(Config.LayerPlayerFriend); fsm.pickableCount = 1; //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>(); //if (screenCastLayer != null) //{ // //screenCastLayer.setLayer(Config.LayerScreenRaycastFriend); // screenCastLayer.setLayer(Config.LayerPlayerFriend); //} } break; case CampFlag.CampFlag_Enemy: { m_gameObject.layer = LayerMask.NameToLayer(Config.LayerPlayerEnemy); fsm.baseLayer = LayerMask.NameToLayer(Config.LayerPlayerEnemy); fsm.pickableCount = 1; //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>(); //if (screenCastLayer != null) //{ // //screenCastLayer.setLayer(Config.LayerScreenRaycastEnemy); // screenCastLayer.setLayer(Config.LayerPlayerEnemy); //} } break; default: break; } } fsm.maxRunForwardSpeed = property.runSpeed_Forward; fsm.maxRunBackwardSpeed = property.runSpeed_Back; fsm.maxRunSidewaySpeed = property.runSpeed_LeftRight; if (EntityFactory.MainHeroView != null && EntityFactory.MainHeroView.StateMachine != null && this.StateMachine != null) { if (EntityFactory.MainHeroView.StateMachine.PK_targetID == this.ID) { this.StateMachine.setPK(true); } else { this.StateMachine.setPK(false); } } return(true); }
/// <summary> /// 绑定主角组件 /// </summary> /// <returns></returns> private bool BindHeroComponent() { Trace.Log("BindHeroComponent() -> Hero, id=" + ID.ToString()); CreatureProperty property = this.Property; BaseStateMachine fsm = this.StateMachine; if (property == null || fsm == null) { Trace.Log("BindHeroComponent failed. CreatureProperty==null or BaseStateMachine == null !!!"); return(false); } m_gameObject.layer = LayerMask.NameToLayer(Config.LayerHero); fsm.baseLayer = LayerMask.NameToLayer(Config.LayerHero); fsm.pickableCount = 1; fsm.isNotAttack = false; MouseCtrl mousectrl = m_gameObject.GetComponent <MouseCtrl>(); if (mousectrl == null) { mousectrl = m_gameObject.AddComponent <MouseCtrl>(); } m_DynamicCommopnent.AddLast(mousectrl); SkillCtrl skillctrl = m_gameObject.GetComponent <SkillCtrl>(); if (skillctrl == null) { skillctrl = m_gameObject.AddComponent <SkillCtrl>(); skillctrl.resetOrderset(0);//property.SkillOrderSetName); } m_DynamicCommopnent.AddLast(skillctrl); ScreenRaycast raycast = m_gameObject.GetComponent <ScreenRaycast>(); if (raycast == null) { raycast = m_gameObject.AddComponent <ScreenRaycast>(); } m_DynamicCommopnent.AddLast(raycast); fsm.isHero = true; fsm.canControl = true; SoldierController soliderController = m_gameObject.GetComponent <SoldierController>(); if (soliderController == null) { soliderController = m_gameObject.AddComponent <SoldierController>(); } m_DynamicCommopnent.AddLast(soliderController); if (StageManager.Instance.CurPermissionState == EStage_PermissionState.ESPS_OB) { OBController obController = m_gameObject.GetComponent <OBController>(); if (obController == null) { obController = m_gameObject.AddComponent <OBController>(); } m_DynamicCommopnent.AddLast(obController); } fsm.maxRunForwardSpeed = property.runSpeed_Forward; fsm.maxRunBackwardSpeed = property.runSpeed_Back; fsm.maxRunSidewaySpeed = property.runSpeed_LeftRight; //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>(); //if (screenCastLayer != null) //{ // screenCastLayer.setHero(true); // GameObject.ResNode.DestroyRes(ref screenCastLayer); //} return(true); }
/// <summary> /// 初始化创建数据 /// </summary> /// <param name="item"></param> /// <returns></returns> public bool InitBuildeData(EntityViewItem item) { if (m_gameObject == null) { Trace.LogError("没有加载游戏对象导致初始化创建数据失败!id=" + item.EntityID); return(false); } m_stateMachine = m_gameObject.GetComponent <BaseStateMachine>(); if (m_stateMachine == null) { Trace.LogError("没有加载实体状态机导致初始化创建数据失败!id=" + item.EntityID); return(false); } m_stateMachine.Init(); m_property = m_gameObject.GetComponent <CreatureProperty>(); if (m_property == null) { Trace.LogError("没有加载生物属性导致初始化创建数据失败!id=" + item.EntityID); return(false); } // 是否为主角,1=主角 IsHero = (item.byIsHero == 1); if (IsHero) { Property.PropertyMaxLimit = ENTITY_PROPERTY.PROPERTY_MAX; } if (!Property.Create()) { return(false); } // 阵营标识 CampFlag = (CampFlag)item.byCampFlag; // 实体标识 InitMaskFlag = item.nMaskFlag; // 附加数据,怪物时为怪物类型 if (ENTITY_TYPE.TYPE_MONSTER == (ENTITY_TYPE)item.EntityType) { //m_nFlag = (item.ndata1 == (int)MONSTER_TYPE.MONSTER_TYPE_TOWER ? 1 : 0); m_nFlag = item.ndata1; } m_nSight = item.nSight; m_BossBloodShowDistance = item.nBossBloodShowDistance; m_BossBloodShowPriority = item.nBossBloodPriority; // 绑定其他游戏组件对象 if (!BindGameCompent()) { return(false); } // 设置属性所属主体对象 Property.Master = this; // 名字 Property.CreatureName = item.szName; // 模型路径 Property.ModelPath = item.szModelPath; // 英雄ID Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_VOCATION, item.nHeroID); // 皮肤ID Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_SKIN, item.nSkinID); // 性别 Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_SEX, item.bySexType); // 等级 Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_LEVEL, item.nLevel); // 阵营 Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_CAMP, item.byCamp); // 标志位 Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_MASK, item.nMaskFlag); // 设置对象有效 m_isValid = true; //Trace.Emphasize("初始化实体完成! id=" + ID); return(true); }
// 所有属性必须在Copy函数中拷贝一遍,才不会出BUG!!! public void Copy(CreatureProperty src) { runSpeed_Forward = src.runSpeed_Forward; runSpeed_Back = src.runSpeed_Back; runSpeed_LeftRight = src.runSpeed_LeftRight; walkSpeed_ForawdBack = src.walkSpeed_ForawdBack; walkSpeed_LeftRight = src.walkSpeed_LeftRight; enableDodge = src.enableDodge; upGravity = src.upGravity; downGravity = src.downGravity; jumpBaseHeight = src.jumpBaseHeight; jumpDodgeHeight = src.jumpDodgeHeight; floatingMinHeight = src.floatingMinHeight; //最低浮空高度 wallClimbSpeed = src.wallClimbSpeed; //飞檐走壁上升/下降速度 wallWalkSpeed = src.wallWalkSpeed; //飞檐走壁行走速度 FPSMode = src.FPSMode; cameraType = src.cameraType; aimDistance = src.aimDistance; //普通瞄准距离 lockAimDistance = src.lockAimDistance; //锁定攻击对象的有效距离 attackedAimDistance = src.attackedAimDistance; //此距离内被其他英雄攻击后选中对方 attackMoveRange = src.attackMoveRange; //此距离内边走边打动作变成原地动作 maxAttackMoveSpeedScale = src.maxAttackMoveSpeedScale; //攻击工作因为加速而设置状态机的speed时,位移的速度加倍有限,在此设置最大倍数,超过按比例滑步,小于0不起效 commonAttackSkillID = src.commonAttackSkillID; //普通攻击技能ID,用于处理连续普攻导致其他技能无法触发 animatorCrossSpeed = src.animatorCrossSpeed; selectType = src.selectType; //目标选择标识,0表示不开启 targetFilter = src.targetFilter; //目标过滤标识 selectDrawType = src.selectDrawType; //绘制地面选择范围标识,0表示不开启 selectDrawAttackRange = src.selectDrawAttackRange; //地面选择范围 selectDrawChooseRange = src.selectDrawChooseRange; //地面选择宽度 selectDrawTargetType = src.selectDrawTargetType; //地面范围标识目标过滤 shineScale = src.shineScale; //scale倍数 shineSeconds = src.shineSeconds; //scale变化持续秒数 highLightColor = src.highLightColor; //高亮颜色 delightTime = src.delightTime; //亮0.1秒后灭 maxHighLightAlpha = src.maxHighLightAlpha; //高亮alpha //起跳,招录,跑步,急停加光效 effectIDForChangeSkin = src.effectIDForChangeSkin; effectIDForJump = src.effectIDForJump; effectIDForLand = src.effectIDForLand; effectIDForRush = src.effectIDForRush; effectIDForScream = src.effectIDForScream; TopInfoHideInDistance = src.TopInfoHideInDistance; BloodYOffset = src.BloodYOffset; TopNameYOffset = src.TopNameYOffset; CrossHairOffset = src.CrossHairOffset; CrossHairVisible = src.CrossHairVisible; MouseAim = src.MouseAim; checkPosition = src.checkPosition; CreatureHeightInMeters = src.CreatureHeightInMeters; ScreenCastObject = src.ScreenCastObject; CreatureBoundingRad = src.CreatureBoundingRad; InertiaAcceleration = src.InertiaAcceleration; InertiaScale = src.InertiaScale; }
public int GetDamage(CreatureProperty pro) { return GetDamage(pro, m_evolution); }
public int GetDamage(CreatureProperty pro, int evolution) { int damage = (int)((pro.PhysicalAttackDamage+(Level+m_maxLevel*evolution))*m_damageRatio); return (int)(damage + damage*pro.DamageMultiPlier); }
/// <summary> /// 获取属性对应数值 /// </summary> /// <param name="propName">属性名称</param> /// <returns></returns> private float getPropertyValue(string propName) { // 获得主英雄的property if (EntityFactory.MainHeroView == null) { return(.0f); } CreatureProperty property = EntityFactory.MainHeroView.Property; if (property == null) { return(.0f); } int nScaleRatio = 100; int nScaleRatioEx = 10000; switch (propName) { case "CPA": case "PA": case "PPA": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PA)); } case "CPD": case "PD": case "PPD": case "PDFA1": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PD)); } case "CMA": case "MA": case "PMA": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MA)); } case "CMD": case "MD": case "PMD": case "MDFA1": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MD)); } case "CHP": case "HP": case "PHP": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_HP)); } case "CMP": case "MP": case "PMP": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MP)); } case "CCRC": case "CRC": case "PCRC": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_CRC) / nScaleRatio); } case "CSD": case "SD": case "PSD": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SD)); } case "_PASD": // 攻击速度(放大ZOOM_IN_MULTIPLE倍) { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PASD) / nScaleRatio); } case "CPASD": case "PASD": case "PPASD": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_AF) / nScaleRatio); } case "CHPRY": case "HPRY": case "PHPRY": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_HP_REPLY)); } case "CMPRY": case "MPRY": case "PMPRY": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MP_REPLY)); } case "LEVEL": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_LEVEL)); } case "COOL": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PCT_COOL_REDUCE) / nScaleRatio); } case "MMP": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MAX_MP)); } case "MHP": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MAX_HP)); } case "BPA": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_PA) / nScaleRatio); } case "BMA": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_MA) / nScaleRatio); } case "BPD": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_PD) / nScaleRatio); } case "BMD": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_MD) / nScaleRatio); } case "BSD": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_SD) / nScaleRatio); } case "BPASD": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_AF) / nScaleRatioEx); } case "BCRC": { return(0.0f); } case "BCOOL": { return(0.0f); } case "APA": { float fBasePA = (float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_PA) / 100.0f; // 基础物理攻击 float fAppendPA = ((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PA)) / 100.0f; // 附加物理攻击 float fAppendPPA = ((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PCT_PA)) / 10000.0f; // 附加百分比物理攻击 //Trace.Log("APA: 基础物理攻击=" + property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_PA).ToString() // + ", 附加物理攻击="+ property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PA).ToString() // + ",附加百分比物理攻击="+ property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PCT_PA).ToString()); return(fAppendPA + (fBasePA + fAppendPA) * fAppendPPA); } case "AMA": // AMA = fAppendMA + (fBaseMA + fAppendMA) * fAppendPMA { float fBaseMA = (float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_MA); // 基础法术攻 float fAppendMA = ((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_MA)) / 100.0f; // 附加法术攻击 float fAppendPMA = ((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PCT_MA)) / 10000.0f; // 附加百分比法术攻 return(fAppendMA + (fBaseMA + fAppendMA) * fAppendPMA); } case "APD": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PD) / nScaleRatio); } case "AMD": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_MD) / nScaleRatio); } case "ASD": { float fCurentValue = (float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SD); float fBaseSD = (float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_SD) / nScaleRatio; return(fCurentValue - fBaseSD); } case "APASD": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_AF) / nScaleRatio - (float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_AF) / nScaleRatioEx); } case "ACRC": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_CRC) / nScaleRatioEx); } case "ACOOL": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PCT_COOL_REDUCE) / nScaleRatio); } case "PAF": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PCT_AF)); } case "PDP": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PDP)); } case "PPDP": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PCT_PDP) / nScaleRatio); } case "MDP": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MDP)); } case "PMDP": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PCT_MDP) / nScaleRatio); } case "PPDR": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PCT_PDRAINS) / nScaleRatio); } case "PMDR": { return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PCT_MDRAINS) / nScaleRatio); } default: return(0.0f); } }
public void CopyTo(CreatureProperty other) { other.m_owner = m_owner; other.m_baseProperty = m_baseProperty; other.m_hp = m_hp; other.m_alphaMaxHP = m_alphaMaxHP; other.m_alphaPhysicalDamage = m_alphaPhysicalDamage; other.m_alphaCriticalRatio = m_alphaCriticalRatio; other.m_alphaCriticalDamage = m_alphaCriticalDamage; other.m_alphaPhysicalDefencePoint = m_alphaPhysicalDefencePoint; other.m_damageReduction = m_damageReduction; other.m_alphaMoveSpeed = m_alphaMoveSpeed; other.m_betaMoveSpeed = m_betaMoveSpeed; other.m_alphaLifeSteal = m_alphaLifeSteal; other.m_gainExtraExp = m_gainExtraExp; other.m_gainExtraGold = m_gainExtraGold; other.m_alphaAttackCoolTime = m_alphaAttackCoolTime; other.m_level = m_level; other.m_exp = m_exp; other.m_bulletAlphaLength = m_bulletAlphaLength; other.m_tabDamage = m_tabDamage; other.m_shield = m_shield; other.m_bombRange = m_bombRange; other.m_attackRange = m_attackRange; other.m_alphaMaxSP = m_alphaMaxSP; other.m_sp = m_sp; other.m_alphaSPRegen = m_alphaSPRegen; other.m_callableFollowers = m_callableFollowers; other.m_damageMultiPlier = m_damageMultiPlier; other.m_evolution = m_evolution; }
public void ChangeHostEntity(GameObject entity) { m_Entity = entity; m_Property = entity.GetComponent<CreatureProperty>(); }
public void ActorInfoChangeUpdate(IntPtr ptrParam, int nPtrLen, int nActorID = nDefaultSelfActorID) { CheckGetSelfPDBID(ref nActorID); if (!actorPlayer.ContainsKey(nActorID)) { return; } cmd_actor_info_change data = IntPtrHelper.toData <cmd_actor_info_change>(ptrParam); switch (data.nType) { case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_LEVEL: { actorPlayer[nActorID].playerInfo.nLv = data.nValue1; } break; case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_PKWINNUM: { actorPlayer[nActorID].playerInfo.nPKWinNum = data.nValue1; } break; case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_PKTOTALNUM: { actorPlayer[nActorID].playerInfo.nPKTotalNum = data.nValue1; } break; case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_EXP: { actorPlayer[nActorID].playerInfo.ulCurrentExp = (uint)data.nValue1; actorPlayer[nActorID].playerInfo.ulNeedExp = (uint)data.nValue2; } break; case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_NAME: { actorPlayer[nActorID].playerInfo.chPlayerName = data.str1; if (EntityFactory.MainHeroView != null) { CreatureProperty property = EntityFactory.MainHeroView.Property; if (property != null) { property.CreatureName = data.str1; } } } break; case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_GLORY: { for (int i = 0; i < (int)ENACHIEVE.ENACHIEVE_MAX; i++) { actorPlayer[nActorID].playerInfo.nGlory[i] = data.nGlory[i]; actorPlayer[nActorID].playerInfo.llWarID[i] = data.llWarID[i]; } } break; case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_RANKNUM: { actorPlayer[nActorID].playerInfo.nRankMatchNum = data.nValue1; actorPlayer[nActorID].playerInfo.nRankWinNum = data.nValue2; } break; default: break; } }