/// <summary> /// 添加伤害体 TODO /// </summary> /// <param name="damageBodyObj"></param> /// <param name="skillId"></param> /// <param name="damageId"></param> /// <returns></returns> public DamageBody AddDamageBody(BaseRole host, int dirX, int dirY, int skillId, int damageId) { if (MapManager.Instance == null || MapManager.Instance.HasCurMap == false) { return(null); } DamageBodyInfo dbInfo = DamageDataManager.Instance.GetDamageBodyInfo(damageId); if (dbInfo == null) { return(null); } GameObject obj = new GameObject(); if (obj == null) { return(null); } string handleName = skillId + "_" + GetHandleIndex(); // 没想好 obj.name = handleName; GlobalVarFun.AttachChild(m_rootObj, obj); DamageBody db = obj.AddComponent <DamageBody>(); db.InitDamage(host, handleName, dirX, dirY, skillId, dbInfo); m_damageBodyDic.Add(handleName, db); return(db); }
/// <summary> /// 设置Role初始数据 创建gameObject /// </summary> /// <param name="baseInfo"></param> /// <param name="initInfo"></param> public bool InitBaseRole(string handleName, BaseRoleInfo baseInfo, MapRoleInfo initInfo) { if (baseInfo == null || initInfo == null) { m_bStarted = false; return(false); } // 初始化数据 m_sHandleName = handleName; m_eRoleType = (eRoleType)initInfo.RoleType; m_baseInfo = baseInfo; m_initInfo = initInfo; m_fWidth = baseInfo.Width; m_fHeight = baseInfo.Height; m_fPosX = initInfo.InitPosX; m_fPosY = initInfo.InitPosY; int curHp = initInfo.InitHP; if (curHp == -1) { m_iCurHp = m_baseInfo.MaxHp; } else { m_iCurHp = curHp; } m_ulAction = (ulong)initInfo.InitStatus; m_curStatus = (ePhtatus)m_ulAction; m_bIsStatic = initInfo.IsStatic; m_bCanMove = initInfo.CanMove; // 初始化ShowObject GameObject prefabObj = Resource.LoadObj(m_baseInfo.PrefabName) as GameObject; if (null == prefabObj) { m_bStarted = false; return(false); } GameObject showObj = GameObject.Instantiate(prefabObj); showObj.name = "actor"; GlobalVarFun.AttachChild(gameObject, showObj); m_showObj = showObj; // 初始化m_mapRole if (m_mapRole == null) { m_mapRole = new MapRole(this); } m_mapRole.OnChangeMap(MapManager.Instance.curMapWorld, m_fPosX, m_fPosY, m_fWidth, m_fHeight); m_mapRole.SetInitData(m_baseInfo, m_initInfo); Clear(); m_bStarted = true; return(true); }
/// <summary> /// 设置伤害体初始数据 /// </summary> /// <returns></returns> public bool InitDamage(BaseRole host, string handleName, int dirX, int dirY, int skillId, DamageBodyInfo node) { if (host == null || node == null) { m_bStarted = false; return(false); } m_host = host; m_sHandleName = handleName; m_iSkillID = skillId; m_eDamageType = (eDamageBodyType)node.DamageType; m_eMoveType = (eDamageMoveType)node.MoveType; m_damageBodyInfo = node; // TODO 可能有很多个? GameObject prefabObj = Resource.LoadObj(m_damageBodyInfo.PrefabName) as GameObject; if (null == prefabObj) { m_bStarted = false; return(false); } GameObject showObj = GameObject.Instantiate(prefabObj); showObj.name = "node"; GlobalVarFun.AttachChild(gameObject, showObj); m_fWidth = m_damageBodyInfo.Width; m_fHeight = m_damageBodyInfo.Height; m_fEsTime = m_damageBodyInfo.EsTime; m_iDamageCount = m_damageBodyInfo.DamageCount; m_iDamage = m_damageBodyInfo.DamageValue; m_fPosX = host.m_fPositionX + m_damageBodyInfo.OffsetX; m_fPosY = host.m_fPositionY + m_damageBodyInfo.OffsetY; m_iDirX = dirX; m_iDirY = dirY; m_fVelocityX = dirX * m_damageBodyInfo.MoveVelocity; m_fVelocityY = dirY * m_damageBodyInfo.MoveVelocity; m_velocity.x = m_fVelocityX; m_velocity.y = m_fVelocityY; if (m_mapDamage == null) { m_mapDamage = new MapDamage(this); } m_mapDamage.InitB2Body(MapManager.Instance.curMapWorld, m_fPosX, m_fPosY, m_fWidth, m_fHeight); m_mapDamage.SetCurVelocityX(m_fVelocityX); m_mapDamage.SetCurVelocityY(m_fVelocityY); Clear(); m_bStarted = true; m_fBeginTime = GlobalVarFun.GetTime(); return(true); }
public bool AddRoleObj(string handleName, GameObject roleObj, MapRoleInfo initInfo) { BaseRole baseRole = null; if (true == initInfo.CanControl) { baseRole = CreatePlayer(roleObj); } else { baseRole = CreateBaseRole(roleObj); } if (baseRole == null) { return(false); } BaseRoleInfo baseInfo = RoleDataManager.Instance.GetRoleBaseInfo(initInfo.RoleID); if (baseInfo == null) { GameObject.Destroy(roleObj); return(false); } bool setSuc = baseRole.InitBaseRole(handleName, baseInfo, initInfo); if (setSuc) { GameObject sideObj = GetSideObj(initInfo.RoleType); if (sideObj == null) { sideObj = m_rootObj; } GlobalVarFun.AttachChild(sideObj, roleObj); m_roleDic.Add(handleName, baseRole); } else { GameObject.Destroy(roleObj); return(false); } return(true); }
public RoleManager() { _instance = this; m_rootObj = GlobalVarFun.GetGlobalObj("RoleRoot"); if (m_rootObj == null) { m_bLoaded = false; return; } for (int i = 0; i < 4; i++) { GameObject side = new GameObject(); // GlobalVarFun.GetChild(m_rootObj, "side_" + i); if (side == null) { break; } side.name = "side_" + i; GlobalVarFun.AttachChild(m_rootObj, side); m_sideList.Add(side); } m_bLoaded = true; }