コード例 #1
0
 /// <summary>
 /// Object's melee attack
 /// </summary>
 /// <param name="target"></param>
 private void MeleeAttack(Transform target)
 {
     //МИЛИАТАКВГЕРОЯ
     Debug.Log($"{Name} attack the player on Melee");
     _meleeAttackIsReady = false;
     _meleeAttackTimeRemaining.AddTimeRemaining();
 }
コード例 #2
0
 public MaceController(GameObject mace)
 {
     _joint = mace.GetComponent <HingeJoint2D>();
     AddMotorForce();
     _timeRemaining = new TimeRemaining(AddMotorForce, 4.4f, true);
     _timeRemaining.AddTimeRemaining();
 }
コード例 #3
0
 /// <summary>
 /// Set dead condition to object
 /// </summary>
 protected override void BecomeDead()
 {
     base.BecomeDead();
     _agent.enabled = false;
     _inviseOnDeathTimeRemaining.AddTimeRemaining();
     SetCondition(Conditions.Dead);
 }
コード例 #4
0
        private void Start()
        {
            _destroyTimeRemaining = new TimeRemaining(DestroyAmmunition, _timeToDestruct);
            _destroyTimeRemaining.AddTimeRemaining();

            _damageLowerTimeRemaining = new TimeRemaining(LossOfDamage, 1.0f, true);
            _damageLowerTimeRemaining.AddTimeRemaining();
        }
コード例 #5
0
 /// <summary>
 /// Начинает перезарядку, выключает возможность стрельбы во время перезарядки
 /// </summary>
 public void StartReloadClip()
 {
     if (Clip.TotalAmmunition > 0)
     {
         _isReady = false;
         _reloadTimeRemaining.AddTimeRemaining();
     }
 }
コード例 #6
0
 private void DeactivatePlayer()
 {
     _character.gameObject.SetActive(false);
     _character.transform.position = Vector3.zero;
     _character.transform.rotation = Quaternion.identity;
     _timeRemaining = new TimeRemaining(ActivatePlayer, _timeToReload, false);
     _timeRemaining.AddTimeRemaining();
 }
コード例 #7
0
ファイル: Ammunition.cs プロジェクト: lawrakina/FlashLight
        protected virtual void Start()
        {
            //Destroy(gameObject, _timeToDestruct);
            _timeRemaining = new TimeRemaining(LossOfDamage, 1.0f, true);
            _timeRemaining.AddTimeRemaining();


            //_timePutToPool.AddTimeRemaining();
        }
コード例 #8
0
 public void Throw(Vector3 position, Vector3 velocity)
 {
     _core.position             = position;
     _rigidbody.velocity        = Vector2.zero;
     _rigidbody.angularVelocity = 0;
     Active(true);
     _rigidbody.AddForce(velocity, ForceMode2D.Impulse);
     _timeRemaining = new TimeRemaining(ReturnToPool, _config.LifeCoreTime, false);
     _timeRemaining.AddTimeRemaining();
 }
コード例 #9
0
        /// <summary>
        /// Object's range attack
        /// </summary>
        private void RangeAttack(Transform target)
        {
            var obj = Instantiate(_enemyBullet, _enemyBarrel.position, _enemyBarrel.rotation);

            obj.AddForce((target.position - _enemyBarrel.position) * 60.0f);
            obj._source = transform;
            Debug.Log($"{Name} attack the player on Range");
            _rangeAttackIsReady = false;
            _rangeAttackTimeRemaining.AddTimeRemaining();
        }
コード例 #10
0
ファイル: Ammunition.cs プロジェクト: lawrakina/FlashLight
 public void AddForce(Vector3 direction)
 {
     if (!Rigidbody)
     {
         return;
     }
     EnableRigidBody();
     Rigidbody.AddForce(direction);
     _timePutToPool = new TimeRemaining(DestroyAmmunition, _timeToDestruct);
     _timePutToPool.AddTimeRemaining();
 }
コード例 #11
0
 protected override void Awake()
 {
     base.Awake();
     _updateConditionTimeRemaining = new TimeRemaining(() => UpdateCondition(), _updateConditonTime, true);
     _inviseOnDeathTimeRemaining   = new TimeRemaining(() => InviseOnDeath(), 3.0f);
     _rangeAttackTimeRemaining     = new TimeRemaining(() => RangeAttackSetReady(), _rangeAttackCooldownTime);
     _meleeAttackTimeRemaining     = new TimeRemaining(() => MeleeAttackSetReady(), _meleeAttackCooldownTime);
     _chillTimeRemaining           = new TimeRemaining(() => StartPatrol(), 3.0f);
     _vision = new Vision();
     _agent  = GetComponent <NavMeshAgent>();
     SetCondition(Conditions.None);
     _updateConditionTimeRemaining.AddTimeRemaining();
 }
コード例 #12
0
        private void Start()
        {
            _timeRemaining = new TimeRemaining(ReadyShoot, _rechergeTime);
            for (var i = 0; i <= _countClip; i++)
            {
                AddClip(new Clip {
                    CountAmmunition = _maxCountAmmunition
                });
            }

            ReloadClip();
            _timeRemaining.AddTimeRemaining();
        }
コード例 #13
0
 private void OnCollisionEnter(Collision collision)
 {
     if (_isReady)
     {
         if (collision.gameObject.tag == "Player")
         {
             var setDamage = collision.gameObject.GetComponent <ICollision>();
             if (setDamage != null)
             {
                 setDamage.CollisionEnter(new InfoCollision(_mineDamage, _source, Rigidbody.velocity));
             }
             _timeRemaining.AddTimeRemaining();
         }
     }
 }
コード例 #14
0
ファイル: Weapon.cs プロジェクト: alexss8/MyFirstFPS
        public virtual void Fire()
        {
            if (!_isReady)
            {
                return;
            }
            if (Clip.CountAmmunition <= 0)
            {
                return;
            }
            var temAmmunition = Instantiate(Ammunition, _barrel.position, _barrel.rotation); //todo Pool object

            temAmmunition.AddForce(_barrel.forward * _force);
            Clip.CountAmmunition--;
            _isReady = false;
            _timeRemaining.AddTimeRemaining();
        }
コード例 #15
0
 private void Start()
 {
     Destroy(gameObject, _timeToDestruct);
     _timeRemaining = new TimeRemaining(LossOfDamage, 1.0f, true);
     _timeRemaining.AddTimeRemaining();
 }
コード例 #16
0
 public void Initialize()
 {
     _timeRemaining = new TimeRemaining(Shoot, _config.SpawnCoreTime, true);
     _timeRemaining.AddTimeRemaining();
 }
コード例 #17
0
 private void AddMotorForce()
 {
     _joint.useMotor = true;
     _timeRemaining  = new TimeRemaining(StopMotorForce, 0.1f, false);
     _timeRemaining.AddTimeRemaining();
 }
コード例 #18
0
        /// <summary>
        /// Update Method
        /// </summary>
        /// <param name="PlayerTransform"></param>
        public void MoveSet()
        {
            if (_isDead)
            {
                SetCondition(Conditions.Dead);
            }
            if (_objectCondition != Conditions.Dead)
            {
                if (!_isEvades)
                {
                    if (_vision.VisionM(Transform, PlayerTransform, _activeDis, out _currentDis))//Определяем видимость игрока объектом
                    {
                        _playerIsVisible = true;
                        _objectCondition = Conditions.Angry;
                    }
                    else
                    {
                        _playerIsVisible = false;
                    }
                }
                if (_isEvades)
                {
                    SelfRegeneration();
                    if (_healthPoint == _baseHealthPoint)
                    {
                        _isEvades = false;
                    }
                }
            }
            switch (_objectCondition)
            {
            case Conditions.None:
                if (_agent.hasPath)
                {
                    _agent.SetDestination(Transform.position);
                }
                SetCondition(Conditions.ChillAndStartPatrol);
                break;

            case Conditions.ChillAndStartPatrol:
                _chillTimeRemaining.AddTimeRemaining();    //запускает метод StartPatrol
                break;

            case Conditions.Patrol:
                break;

            case Conditions.Angry:
                if (_rangeAttackIsReady)
                {
                    RangeAttack(PlayerTransform);
                }
                else if (_meleeAttackIsReady)
                {
                    if (_currentDis <= _activeDis * _activeDis)
                    {
                        MeleeAttack(PlayerTransform);
                    }
                    SetCondition(Conditions.Chase);
                }
                else
                {
                    SetCondition(Conditions.Chase);
                }
                break;

            case Conditions.Chase:
                if (_currentDis > _activeDis * _activeDis)
                {
                    MoveTo(PlayerTransform.position);
                }
                else if (!_rangeAttackIsReady)
                {
                    if (_currentDis > _meleeActiveDis * _meleeActiveDis)
                    {
                        MoveTo(PlayerTransform.position);
                    }
                    else if (_meleeAttackIsReady)
                    {
                        SetCondition(Conditions.Angry);
                    }
                }
                else
                {
                    SetCondition(Conditions.Angry);
                }
                break;

            case Conditions.Dead:
                break;

            default:
                break;
            }
        }
コード例 #19
0
 private void Start()
 {
     _timeRemaining = new TimeRemaining(LossOfDamage, 1.0f, true);
     _timeRemaining.AddTimeRemaining();
 }