/// <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(); }
public MaceController(GameObject mace) { _joint = mace.GetComponent <HingeJoint2D>(); AddMotorForce(); _timeRemaining = new TimeRemaining(AddMotorForce, 4.4f, true); _timeRemaining.AddTimeRemaining(); }
/// <summary> /// Set dead condition to object /// </summary> protected override void BecomeDead() { base.BecomeDead(); _agent.enabled = false; _inviseOnDeathTimeRemaining.AddTimeRemaining(); SetCondition(Conditions.Dead); }
private void Start() { _destroyTimeRemaining = new TimeRemaining(DestroyAmmunition, _timeToDestruct); _destroyTimeRemaining.AddTimeRemaining(); _damageLowerTimeRemaining = new TimeRemaining(LossOfDamage, 1.0f, true); _damageLowerTimeRemaining.AddTimeRemaining(); }
/// <summary> /// Начинает перезарядку, выключает возможность стрельбы во время перезарядки /// </summary> public void StartReloadClip() { if (Clip.TotalAmmunition > 0) { _isReady = false; _reloadTimeRemaining.AddTimeRemaining(); } }
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(); }
protected virtual void Start() { //Destroy(gameObject, _timeToDestruct); _timeRemaining = new TimeRemaining(LossOfDamage, 1.0f, true); _timeRemaining.AddTimeRemaining(); //_timePutToPool.AddTimeRemaining(); }
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(); }
/// <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(); }
public void AddForce(Vector3 direction) { if (!Rigidbody) { return; } EnableRigidBody(); Rigidbody.AddForce(direction); _timePutToPool = new TimeRemaining(DestroyAmmunition, _timeToDestruct); _timePutToPool.AddTimeRemaining(); }
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(); }
private void Start() { _timeRemaining = new TimeRemaining(ReadyShoot, _rechergeTime); for (var i = 0; i <= _countClip; i++) { AddClip(new Clip { CountAmmunition = _maxCountAmmunition }); } ReloadClip(); _timeRemaining.AddTimeRemaining(); }
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(); } } }
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(); }
private void Start() { Destroy(gameObject, _timeToDestruct); _timeRemaining = new TimeRemaining(LossOfDamage, 1.0f, true); _timeRemaining.AddTimeRemaining(); }
public void Initialize() { _timeRemaining = new TimeRemaining(Shoot, _config.SpawnCoreTime, true); _timeRemaining.AddTimeRemaining(); }
private void AddMotorForce() { _joint.useMotor = true; _timeRemaining = new TimeRemaining(StopMotorForce, 0.1f, false); _timeRemaining.AddTimeRemaining(); }
/// <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; } }
private void Start() { _timeRemaining = new TimeRemaining(LossOfDamage, 1.0f, true); _timeRemaining.AddTimeRemaining(); }