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; } } }
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; } } }
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; } } }
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); }
private void Move() { if (newMoveReady) { Rb.MovePosition(nextPosition); transform.rotation = nextRotation; newMoveReady = false; } }
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()); } }
/// <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; }
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)); }
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); } } }
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); } } }
/// <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; } }
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; } } }
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)); }