You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
C#
50 lines
1.3 KiB
C#
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);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
} |