예제 #1
0
        public void Attack()
        {
            if (_memory.Target == null || _abilities == null)
            {
                return;
            }

            if (_physics.Form == SpiritForm.SF_BALL)
            {
                _abilities.UsePrimary();
            }
            if (_physics.Form == SpiritForm.SF_SPIRIT)
            {
                if (_timeAsSpirit >= _chaseTime)
                {
                    _abilities.UseSecondary();
                }
                else
                {
                    _timeAsSpirit += Time.DeltaTime;
                }
            }
            else
            {
                _timeAsSpirit = 0;
            }

            _direction = _memory.Target.Position - GameObject.Position;
        }
예제 #2
0
        public void Attack()
        {
            if (_memory.Target == null)
            {
                return;
            }

            Vector2 start     = GameObject.Position + _physics.ViewPoint;
            Vector2 end       = _memory.Target.Position;
            var     direction = Vector2.Normalize((end - start));

            _physics.ViewRotation = (float)Math.Atan2(direction.Y, direction.X);

            if (_abilities != null)
            {
                _abilities.UsePrimary();
            }
        }