public static bool Play(ref U3D_Render.EntityView ev, int effectID, cmd_creature_skillview cmdInfo) { //光效开关 if (!Initialize.Instance || !OptimitzedControlPlane.Instance.EnabledLightingEffect) { return(true); } LightEffectParam param = new LightEffectParam(); param.nFeedbackID = cmdInfo.nFeedBackID; param.bIsHero = ev.IsHero; param.nSrcEntityID = ev.ID; param.nTargetEntityID = cmdInfo.nTargetEntityID; param.srcObject = ev.gameObject; param.nCreatorSide = cmdInfo.nCreatorSide; if (cmdInfo.nSrcEntityID > 0) { param.nSrcEntityID = cmdInfo.nSrcEntityID; param.srcObject = EntityFactory.getEntityGameObjectByID(cmdInfo.nSrcEntityID); } param.fDistance = cmdInfo.fDistance; param.fAttackRange = cmdInfo.fAttackRange; param.speed = cmdInfo.fPASD; if (cmdInfo.nTargetEntityID != 0) { param.targetObject = EntityFactory.getEntityGameObjectByID(cmdInfo.nTargetEntityID); } param.targetPos = new Vector3(cmdInfo.fTargetPos_x, cmdInfo.fTargetPos_y, cmdInfo.fTargetPos_z); if (cmdInfo.bFlyToTargetPos != 0) { param.nEffectFlag |= (int)LightEffectParam.EFFECT_FLAG.FlyToTargetPos; } param.sourcePos = new Vector3(cmdInfo.fSrcPos_x, cmdInfo.fSrcPos_y, cmdInfo.fSrcPos_z); if (cmdInfo.bFromSrcPos != 0) { param.nEffectFlag |= (int)LightEffectParam.EFFECT_FLAG.CustomSourcePos; } LightingEffectManager manager = ev.LightingEffectManager; if (manager == null) { return(false); } // 开始光效 manager.AddLighting(effectID, param); // 输出光效信息 if (manager.showLog) { Trace.Log("Add Lighting" + effectID + ". Entity Id=" + ev.ID + " SrcID=" + param.nSrcEntityID); Trace.Log("TargetID=" + cmdInfo.nTargetEntityID + ". TargetPos=(" + cmdInfo.fTargetPos_x + "," + cmdInfo.fTargetPos_y + "," + cmdInfo.fTargetPos_z + ")."); } return(true); }
public static bool Play(ref U3D_Render.EntityView ev, int effectID, int src, int dest, Vector3 toPos, float distance = .0f , float range = .0f, float attackSpeed = 1.0f, int feedbackID = 0) { cmd_creature_skillview cmdInfo = new cmd_creature_skillview(); cmdInfo.nSrcEntityID = src; // 攻击者EntityID cmdInfo.nTargetEntityID = dest; // 受击者EntityID cmdInfo.nFeedBackID = feedbackID; // 反馈ID,当发生碰撞时返回此ID(客户端做一些碰撞效果使用,暂时无用,先留着) cmdInfo.fTargetPos_x = toPos.x; // 目标坐标x cmdInfo.fTargetPos_y = toPos.y; // 目标坐标y cmdInfo.fTargetPos_z = toPos.z; // 目标坐标z cmdInfo.fDistance = distance; // 技能距离 cmdInfo.fAttackRange = range; // 攻击范围 cmdInfo.fPASD = attackSpeed; // 攻击速度 return(Play(ref ev, effectID, cmdInfo)); }