Exemplo n.º 1
0
        public void Tick()
        {
            var entityManager = Game.Instance.gameLogicManager.entityManager;
            var entities      = entityManager.GetAllEntities();

            foreach (var item in entities)
            {
                var entity = item.Value;
                var brain  = entity.GetComponent <Brain>();
                if (brain != null)
                {
                    var enemy    = entityManager.GetEntity(brain.enemy);
                    var offset   = enemy.position.position - entity.position.position;
                    var distance = offset.magnitude;
                    if (distance < 5)
                    {
                        if (distance > 1)
                        {
                            var angle = Vector3.Angle(offset, Vector3.forward);
                            if (Vector3.Cross(offset, Vector3.forward).y > 0)
                            {
                                angle = 360 - angle;
                            }
                            var entityData = new FrameData.EntityData()
                            {
                                id    = entity.id,
                                type  = FrameData.OperationType.Moveing,
                                angle = angle
                            };
                            m_EntityData.Add(entityData);
                        }
                        else if (entity.movement.speed > 0)
                        {
                            var entityData = new FrameData.EntityData()
                            {
                                id    = entity.id,
                                type  = FrameData.OperationType.EndMove,
                                angle = float.NaN
                            };
                            m_EntityData.Add(entityData);
                        }
                    }
                    else if (entity.movement.speed > 0)
                    {
                        var entityData = new FrameData.EntityData()
                        {
                            id    = entity.id,
                            type  = FrameData.OperationType.EndMove,
                            angle = float.NaN
                        };
                        m_EntityData.Add(entityData);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void OnEntityClick(PointerEventData eventData, object userData)
        {
            var target = userData as Entity;

            if (target.id == Game.Instance.inputManager.entity)
            {
                return;
            }
            var entityManager = Game.Instance.gameLogicManager.entityManager;
            var entity        = entityManager.GetEntity(Game.Instance.inputManager.entity);
            var data          = new FrameData.EntityData()
            {
                id          = entity.id,
                type        = FrameData.OperationType.Ability,
                abilityName = entity.ability.attack,
                target      = target.id
            };

            m_FrameData.Add(data);
        }
Exemplo n.º 3
0
        public override void Tick()
        {
            var up    = UnityEngine.Input.GetKey(KeyCode.UpArrow);
            var down  = UnityEngine.Input.GetKey(KeyCode.DownArrow);
            var left  = UnityEngine.Input.GetKey(KeyCode.LeftArrow);
            var right = UnityEngine.Input.GetKey(KeyCode.RightArrow);

            float angle = float.NaN;

            if (up && right)
            {
                angle = 45;              // ↗
            }
            else if (up && left)
            {
                angle = 315;                  // ↖
            }
            else if (up && down)
            {
            }
            else if (right && down)
            {
                angle = 135;                     // ↘
            }
            else if (right && left)
            {
            }
            else if (down && left)
            {
                angle = 225;                    // ↙
            }
            else if (up)
            {
                angle = 0;          // ↑
            }
            else if (right)
            {
                angle = 90;             // →
            }
            else if (down)
            {
                angle = 180;            // ↓
            }
            else if (left)
            {
                angle = 270;            // ←
            }
            else
            {
            }
            if (float.IsNaN(angle) == false)
            {
                var data = new FrameData.EntityData()
                {
                    id    = Game.Instance.inputManager.entity,
                    type  = FrameData.OperationType.Moveing,
                    angle = angle
                };
                m_FrameData.Add(data);
                m_Moving = true;
            }
            else if (m_Moving)
            {
                var data = new FrameData.EntityData()
                {
                    id   = Game.Instance.inputManager.entity,
                    type = FrameData.OperationType.EndMove
                };
                m_FrameData.Add(data);
                m_Moving = false;
            }
        }