Пример #1
0
    public override void OnAttack()
    {
        Debug.Log("ONATTACK");
        if (Vector2.Distance((Vector2)transform.position, centerPoint) > 1 && !onCenterPoint)
        {
            Vector2 dir = (centerPoint - (Vector2)transform.position).normalized;
            Rb.MovePosition((Vector2)transform.position + dir * speed * Time.deltaTime);
        }
        else
        {
            canChangeState        = true;
            changeDirectionTimer += Time.deltaTime;
            onCenterPoint         = true;
            MoveUpDown();
            shootTimer += Time.deltaTime;

            int rand = Random.Range(0, 100);
            if (rand < 30 && shootTimer >= fireRatio)
            {
                Vector2 playerPos = Player.transform.position;
                Shoot((Vector2)transform.position - playerPos);
            }
            else if (rand >= 30 && shootTimer >= fireRatio)
            {
                shootTimer = 0;
            }
        }
    }
Пример #2
0
    public override void OnIdle()
    {
        //if (!ScreenUtils.IsInside(new Vector2(transform.position.x + size.x, transform.position.y), backgroundBounds))
        if (Vector2.Distance((Vector2)transform.position, centerPoint) > 1 && !onCenterPoint)
        {
            Vector2 dir = (centerPoint - (Vector2)transform.position).normalized;
            Rb.MovePosition((Vector2)transform.position + dir * speed * Time.deltaTime);
        }
        else
        {
            canChangeState        = true;
            changeDirectionTimer += Time.deltaTime;
            onCenterPoint         = true;
            MoveUpDown();
            shootTimer += Time.deltaTime;

            int rand = Random.Range(0, 100);
            if (rand < 30 && shootTimer >= fireRatio)
            {
                Shoot(Vector2.left);
            }
            else if (rand >= 30 && shootTimer >= fireRatio)
            {
                shootTimer = 0;
            }
        }
    }
Пример #3
0
    private void HandleLoop()
    {
        if (interpolate < 1)
        {
            interpolate = Mathf.Clamp(interpolate + speed * Time.deltaTime, 0, 1);
        }

        if (index != targetPoints.Length - 1)
        {
            Rb.MovePosition(Vector3.Lerp(targetPoints[index].position, targetPoints[index + 1].position, interpolate));
            if (transform.position == targetPoints[index + 1].position)
            {
                index++;
                interpolate = 0;
            }
        }
        else
        {
            Rb.MovePosition(Vector3.Lerp(targetPoints[index].position, targetPoints[0].position, interpolate));
            if (transform.position == targetPoints[0].position)
            {
                index       = 0;
                interpolate = 0;
            }
        }
    }
Пример #4
0
        protected override void Move()
        {
            Vector3 targetDir = Lane.Paths[PathIndex].PathPoints[PathPointIndex].Point - transform.position;
            float   step      = Speed * Time.deltaTime;
            Vector3 newDir    = Vector3.RotateTowards(transform.forward, targetDir, step, 0.0F);

            Rb.MoveRotation(Quaternion.LookRotation(newDir));
            Rb.MovePosition(transform.position + (Target.Point - transform.position).normalized * step);
        }
Пример #5
0
 private void Move()
 {
     if (newMoveReady)
     {
         Rb.MovePosition(nextPosition);
         transform.rotation = nextRotation;
         newMoveReady       = false;
     }
 }
Пример #6
0
        private void MoveToStartPosition()
        {
            Rb.MovePosition(Vector2.Lerp(Rb.position, this.startPos, Time.deltaTime * 2));

            Vector2 distance = this.startPos - Rb.position;

            if (distance.magnitude < _distaneToStartPos * _distaneToStartPos)
            {
                StartCoroutine(StartGameTimer());
            }
        }
Пример #7
0
        /// <summary>   Fixed update. </summary>
        public virtual void FixedUpdate()
        {
            float distance = Vector3.Distance(lastPos, transform.position);

            Animator.SetMovementDistance(distance);

            CheckGrounding();

            Vector3 moveDelta = IntendedVelocity * Time.fixedDeltaTime;

            if (moveDelta.sqrMagnitude > 0.001)
            {
                if (isGrounded == false)
                {
                    GroundCheckResult groundCheckResult = CheckGroundSimple();
                    if (groundCheckResult.RaycastHitAnything && groundCheckResult.IsGrounded)
                    {
                        Rb.MovePosition(groundCheckResult.GroundHit.point);
                        CheckGrounding();
                    }
                }

                if (isGrounded)
                {
                    moveDelta = Vector3.ProjectOnPlane(moveDelta, groundHit.normal);
                }

                Rb.velocity += moveDelta;
                Debug.DrawRay(Rb.position, moveDelta * 100, Color.red);
            }
            else
            {
                if (isGrounded == false)
                {
                    Debug.Log(moveDelta);
                }
                Rb.velocity += moveDelta;
                Debug.DrawRay(Rb.position, moveDelta * 100, Color.green);
            }

            if (IntendedVelocity.x0z().IsApproximatelyVectorZero() == false)
            {
                lookRotation = Quaternion.LookRotation(IntendedVelocity.x0z().normalized);
            }
            Rb.MoveRotation(lookRotation);
            Animator.SetGrounding(isGrounded);

            lastPos = transform.position;
        }
Пример #8
0
    public void MoveUpDown()
    {
        if (changeDirectionTimer > changeDirectionMaxTime)
        {
            if (direction == Vector2.up)
            {
                direction = Vector2.down;
            }
            else if (direction == Vector2.down)
            {
                direction = Vector2.up;
            }

            changeDirectionTimer = 0;
        }
        Rb.MovePosition((Vector2)transform.position + (direction * speed * Time.deltaTime));
    }
Пример #9
0
    private void HandleForward()
    {
        if (interpolate < 1)
        {
            interpolate = Mathf.Clamp(interpolate + speed * Time.deltaTime, 0, 1);
        }

        // if there are no optional target points, just move from start to finish and then back again.
        if (targetPoints.Length == 2)
        {
            if (index != 1)
            {
                Rb.MovePosition(Vector3.Lerp(targetPoints[index].position, targetPoints[index + 1].position, interpolate));
                if (transform.position == targetPoints[index + 1].position)
                {
                    index++;
                }
            }
            else
            {
                SetState(PlatformStates.STOP);
            }
        }
        // if there are optional points
        else if (targetPoints.Length > 2)
        {
            if (index != targetPoints.Length - 1)
            {
                Rb.MovePosition(Vector3.Lerp(targetPoints[index].position, targetPoints[index + 1].position, interpolate));
                if (transform.position == targetPoints[index + 1].position)
                {
                    if ((index + 1) != targetPoints.Length - 1)
                    {
                        interpolate = 0;
                    }
                    index++;
                }
            }
            else
            {
                SetState(PlatformStates.STOP);
            }
        }
    }
Пример #10
0
    private void HandleBackward()
    {
        if (interpolate < 1)
        {
            interpolate = Mathf.Clamp(interpolate + speed * Time.deltaTime, 0, 1);
        }

        // if there are no optional target points
        if (targetPoints.Length == 2)
        {
            if (index != 0)
            {
                Rb.MovePosition(Vector3.Lerp(targetPoints[index].position, targetPoints[index - 1].position, interpolate));
                if (transform.position == targetPoints[index - 1].position)
                {
                    index--;
                }
            }
            else
            {
                SetState(PlatformStates.STOP);
            }
        }
        else if (targetPoints.Length > 2)
        {
            if (index != 0)
            {
                Rb.MovePosition(Vector3.Lerp(targetPoints[index].position, targetPoints[index - 1].position, interpolate));
                if (transform.position == targetPoints[index - 1].position)
                {
                    if ((index - 1) != 0)
                    {
                        interpolate = 0;
                    }
                    index--;
                }
            }
            else
            {
                SetState(PlatformStates.STOP);
            }
        }
    }
Пример #11
0
 /// <summary>
 /// Metodo para executar o estado de Idle
 /// </summary>
 public override void OnIdle()
 {
     //Move o inimigo para esquerda
     Rb.MovePosition((Vector2)transform.position + new Vector2(-speed * Time.deltaTime, 0));
     //Conta o tempo
     timer += Time.deltaTime;
     //Verifica se o tempo atual é maior que o fireRatio
     if (timer >= fireRatio)
     {
         //Pega a posição do player
         Vector2 playerPos = Player.transform.position;
         //Muda a direção da bala para ser a posição do player
         bullet.GetComponent <BulletBehaviour>().direction = (playerPos - (Vector2)transform.position).normalized;
         //Instancia a bala
         Instantiate(bullet, transform.position, bullet.transform.rotation);
         //Seta o tempo para 0
         timer = 0;
     }
 }
Пример #12
0
    private void HandlePingPong()
    {
        if (interpolate < 1)
        {
            interpolate = Mathf.Clamp(interpolate + speed * Time.deltaTime, 0, 1);
        }

        if (targetPoints.Length == 2)
        {
            switch (index)
            {
            case 0:
                Rb.MovePosition(Vector3.Lerp(targetPoints[index].localPosition, targetPoints[index + 1].localPosition, interpolate));
                //Rbody.position = Vector3.Lerp(targetPoints[index].position, targetPoints[index + 1].position, interpolate);
                if (transform.localPosition == targetPoints[index + 1].localPosition)
                {
                    index++;
                    interpolate = 0;
                }
                break;

            case 1:
                Rb.MovePosition(Vector3.Lerp(targetPoints[index].localPosition, targetPoints[index - 1].localPosition, interpolate));
                //Rbody.position = Vector3.Lerp(targetPoints[index].position, targetPoints[index - 1].position, interpolate);
                if (transform.localPosition == targetPoints[index - 1].localPosition)
                {
                    index--;
                    interpolate = 0;
                }
                break;
            }
        }
        else if (targetPoints.Length > 2)
        {
            switch (Forward)
            {
            case false:
                if (index != 0)
                {
                    transform.position = Vector3.Lerp(targetPoints[index].position, targetPoints[index - 1].position, interpolate);
                    if (transform.position == targetPoints[index - 1].position)
                    {
                        index--;
                        interpolate = 0;
                        if (index == 0)
                        {
                            Forward = true;
                        }
                    }
                }
                break;

            case true:
                if (index != targetPoints.Length - 1)
                {
                    transform.position = Vector3.Lerp(targetPoints[index].position, targetPoints[index + 1].position, interpolate);
                    if (transform.position == targetPoints[index + 1].position)
                    {
                        index++;
                        interpolate = 0;
                        if (index == targetPoints.Length - 1)
                        {
                            Forward = false;
                        }
                    }
                }
                break;
            }
        }
    }
Пример #13
0
 public override void OnTrigger()
 {
     Rb.MovePosition((Vector2)transform.position + new Vector2(-speed * Time.deltaTime, 0));
 }
 public override void OnTrigger()
 {
     //Move o inimigo para esquerda
     Rb.MovePosition((Vector2)transform.position + new Vector2(-speed * Time.deltaTime, 0));
 }