using Entitas; using UnityEngine; using Game; public class BulletSystem : IExecuteSystem, IInitializeSystem { private IGroup _entities; public void Initialize() { _entities = Util.GetGroup(GameMatcher.Bullet); } public void Execute() { foreach (var entity in _entities) { if (Util.IsPause(entity)) { continue; } UpdateBulletViewRot(entity); // 更新子弹旋转 // UpdateBullet(entity); UpdateBulletAlive(entity); //子弹销毁 } } public void UpdateBulletAlive(GameEntity entity) { if (!entity.timeline.IsRunning) { //时间轴跑完 Util.DestroyEntity(entity); } if (entity.move.IsAgainstWall) { //击中墙壁 Util.DestroyEntity(entity); } if (entity.skill.SkillHitInfo.Count > 0) { //命中 Util.DestroyEntity(entity); } } public void UpdateBulletViewRot(GameEntity entity) { var view = entity.view; var dir = entity.move.MoveDir; if (dir.magnitude > 0) { var rot = Quaternion.FromToRotation(Vector3.right, dir); view.TransformView.localRotation = rot; } } }