protected override SPPoint Spawn(AISpawnData spData) { base.Spawn(spData); Vector3 pos; Quaternion rot; if (GetPositionAndRotation(out pos, out rot, spData.minAngle, spData.maxAngle)) { //if (!GameConfig.IsMultiMode) { SPPointMovable movable = SPPoint.InstantiateSPPoint <SPPointMovable>(pos, rot, IntVector4.Zero, pointParent, spData.isPath ? 0 : spData.spID, spData.isPath ? spData.spID : 0, true, true, false, false, true, null, OnSpawned, this) as SPPointMovable; movable.target = transform; return(movable); } } return(null); }
Vector3 GetRandomPosition(AISpawnData data, Vector3 center) { for (int i = 0; i < 10; i++) { Vector3 pos = AiUtil.GetRandomPosition(center, minRadius, maxRadius, Vector3.forward, data.minAngle, data.maxAngle); if (!IsInCSCommon(pos)) { return(pos); } } return(Vector3.zero); }
bool GetPositionAndRotation(AISpawnData data, out Vector3 pos, out Quaternion rot, out Vector3 target) { pos = Vector3.zero; rot = Quaternion.identity; target = Vector3.zero; Vector3 point = GetRandom(); if (point != Vector3.zero) { IntVector4 node = AiUtil.ConvertToIntVector4(point, 0); //IntVector2 vec2 = new IntVector2(node.x, node.z); //if (AiManager.Manager.colliders.ContainsKey(vec2)) //{ // Vector3 center = point; // if (CSMain.s_MgCreator.Assembly != null) // center = CSMain.s_MgCreator.Assembly.Position; // pos = GetRandomPosition(data, center); // target = point; //} //else { pos = GetPosition(node); target = Vector3.zero; } //pos = GetPositionFromCollider(node); if (pos != Vector3.zero) { rot = Quaternion.AngleAxis(Random.Range(0, 360), Vector3.up); return(true); } } return(false); }
protected override SPPoint Spawn(AISpawnData spData) { base.Spawn(spData); Vector3 pos; Quaternion rot; Vector3 target; if (GetPositionAndRotation(spData, out pos, out rot, out target)) { SPPointSimulate simulate = SPPoint.InstantiateSPPoint <SPPointSimulate>(pos, rot, IntVector4.Zero, pointParent, spData.isPath ? 0 : spData.spID, spData.isPath ? spData.spID : 0, true, true, false, false, true, null, OnSpawned, this) as SPPointSimulate; simulate.SetData(damage, minInterval, maxInterval, damageRadius); simulate.targetPos = target; if (!simulates.Contains(simulate)) { simulates.Add(simulate); } return(simulate); } return(null); }
protected virtual SPPoint Spawn(AISpawnData spData) { return(null); }