using Entitas; using UnityEngine; public enum EPointType { Red, Blue, } public enum EPointState { Create, CreateWait, Running, Destroy, } [Game] public class PointComponent : IComponent { public EPointState State; public EPointType PointType; public Vector3 CastSpeed; public float TimeLeft; } namespace Game { public abstract partial class Util { public static void ClearPoint(GameEntity entity) { var point = entity.point; point.State = EPointState.Create; } public static void CreatePt(Vector3 pos, Vector3 direction) { pos = new Vector3(pos.x, 0, pos.z); var count = GameRandom.Randint(1, 4); for (int i = 0; i < count; i++) { var pointPos = pos + GameRandom.RandomVector3(-0.4f, 0.4f); var dir = pointPos - pos + direction; var cfgId = GameRandom.Roll(0.7f) ? GameConst.PtRedId : GameConst.PtBlueId; Util.CreateEntity(cfgId, (entity) => { entity.point.CastSpeed = dir; Util.SetEntityPos(entity, pointPos); }); } } } }