Question by
FelipeAE · Oct 29, 2017 at 04:18 AM ·
collider2dtimerfunction call
How to suspend an action?
Good night everyone, i will ask your help for something quite easy. I want my enemy object to wait to revaluate the function Flip () after it is true. Right now, the object is fliping non stop because the condition to flip is true at all times, so, if it could wait a second until the colldist.distance > 2, it would be great.
Resume: i want the object to flip, then wait sometime before reevaluating the statment.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class enemy_2 : MonoBehaviour {
public ColliderDistance2D colldist;
public Collider2D squareCollider;
public float Delay;
public float timer;
public bool FacingRight = true;
public Vector2 direction;
public GameObject Player;
public GameObject pared;
public int EnemySpeed;
public int XmoveDirection;
void Start ()
{
Delay = 3;
squareCollider = pared.GetComponent<Collider2D> ();
}
void LateUpdate ()
{
timer += Time.deltaTime;
if (timer > Delay)
{
colldist = gameObject.GetComponent<Collider2D> ().Distance (squareCollider);
Vector3 direction = new Vector2 (XmoveDirection, 0.0f);
gameObject.GetComponent<Rigidbody2D> ().velocity = direction * EnemySpeed;
if (pared.gameObject.CompareTag ("pared") && colldist.distance < 2)
{
Flip ();
Debug.Log ("Enemy in range");
if (GetComponent<Collider2D>().tag == "Player")
{
Destroy (Player.gameObject);
}
}
}
}
void Flip ()
{
FacingRight = !FacingRight;
Vector2 localScale = gameObject.transform.localScale;
localScale.x *= -1;
transform.localScale = localScale;
}
}
demostracion.png
(422.8 kB)
Comment