示例#1
0
        private void FallOnGround()
        {
            //falling
            if (!IsFalling && !OnGround)
            {
                Animation = EnemyAnimationState.Fall;

                CurrentYValue = transform.position.Y;
                Debug.log("Current Y Value: " + CurrentYValue);
                Debug.log("Current Transform.position.Y: " + transform.position.Y);
                Movement.Y = -Mathf.sqrt(JumpHeight * Gravity);
                IsFalling  = true;
            }
            if (IsFalling)
            {
                //animation = EnemyAnimationState.Fall;
                Movement.X += FallSpeedX * Time.deltaTime;
                Movement.Y += Gravity * Time.deltaTime;
                //movement.Normalize();
                CollisionResult res;
                Mover.move(Movement * FallSpeed * Time.deltaTime, out res);
                if (transform.position.Y >= CurrentYValue)
                {
                    transform.setPosition(new Vector2(transform.position.X, CurrentYValue));
                    Debug.log("Current Y Value after ground hit: " + CurrentYValue);
                    Debug.log("Current Transform.position.Y after ground hit: " + transform.position.Y);
                    IsFalling = false;
                    OnGround  = true;
                    SetState(EnemyState.OnGround);
                }
            }
        }
示例#2
0
 private void Getup()
 {
     Animation = EnemyAnimationState.GetUp;
     OnGround  = false;
     IsFalling = false;
     ITimer task = Core.schedule(2f, false, timer => this.SetState(EnemyState.Following));
 }
示例#3
0
 private void Die()
 {
     if (Alive)
     {
         Alive     = false;
         Animation = EnemyAnimationState.Die;
         entity.scene.findEntity("audio").getComponent <Utilities.AudioController>().EnemyDieEffect.Play();
         var task = Core.schedule(3f, false, timer => entity.detachFromScene());
     }
 }
示例#4
0
 private void HandleOnGround()
 {
     Movement  = Vector2.Zero;
     Animation = EnemyAnimationState.Die;
     if (CurrentLife > 0)
     {
         SetState(EnemyState.GettingUp);
     }
     if (CurrentLife <= 0)
     {
         SetState(EnemyState.Dying);
     }
 }
示例#5
0
 private void GetHit()
 {
     if (_canBeHit)
     {
         _canBeHit = false;
         Animation = EnemyAnimationState.Hit;
         if (WeightedSearchPath != null && WeightedSearchPath.Count() > TargetPositionRange)
         {
             ITimer newTask = Core.schedule(0.3f, false, newTimer => this.SetState(EnemyState.Following));
         }
         else if (WeightedSearchPath != null && WeightedSearchPath.Count() <= TargetPositionRange)
         {
             ITimer newTask = Core.schedule(0.3f, false, newTimer => this.SetState(EnemyState.Attacking));
         }
     }
 }
示例#6
0
 private void Shoot()
 {
     if (entity.scene != null)
     {
         Animation = EnemyAnimationState.Shoot;
         if (!_canBeHit)
         {
             _canBeHit = true;
         }
         if (CanShoot)
         {
             CanShoot   = false;
             Animation  = EnemyAnimationState.Shoot;
             _shootTask = Core.schedule(1f, false, newTimer => MakeBullet(transform.position - _shootOffset, _outVel));
         }
     }
 }
示例#7
0
 private void WalkAnimation()
 {
     Animation = EnemyAnimationState.Walk;
     if (TargetPosition.X > entity.transform.position.X)
     {
         Collider.setLocalOffset(new Vector2(-14, 0));
         //_animationMaster.flipX = true;
     }
     if (TargetPosition.X < entity.transform.position.X)
     {
         Collider.setLocalOffset(new Vector2(14, 0));
     }
     if (WeightedSearchPath != null && WeightedSearchPath.Count() <= TargetPositionRange)
     {
         Animation = EnemyAnimationState.Idle;
     }
 }
示例#8
0
    // Update is called once per frame


    public void activateThisAnimationStateState(EnemyAnimationState animationState)
    {
        updateCurrentState(animationState);
        var states = Enum.GetValues(typeof(AnimationState));

        foreach (int stateNumber in states)
        {
            if ((EnemyAnimationState)stateNumber == animationState)
            {
                animator.SetBool(animationState.ToString(), true);
                this.currentAnimationState = animationState;
            }
            else
            {
                animator.SetBool(((EnemyAnimationState)stateNumber).ToString(), false);
            }
        }
    }
示例#9
0
 public void SetAnimation(EnemyAnimationState aninemationstate)
 {
     _AnimationState = aninemationstate;
 }
示例#10
0
 public virtual void Punch()
 {
     Animation = EnemyAnimationState.Punch;
 }
示例#11
0
 public void updateCurrentState(EnemyAnimationState newAnimationState)
 {
     this.currentAnimationState = newAnimationState;
 }
示例#12
0
 // Start is called before the first frame update
 void Start()
 {
     currentAnimationState = EnemyAnimationState.Move;
     animator = GetComponent <Animator>();
 }