Question by
gamingxd1010 · Jan 14, 2019 at 08:16 PM ·
enemyspeedenemy aislowdown
Reset enemy speed if player is not hit by Raycast.
I am a beginner at game making and i am trying to make a 2D platform game where enemies speed up if they are moving in the players direction on the platform. The problem is that i cant find a way to reset their speed once the player left the. I am using RaycastHit2D to detect if player is between 2 points.
Here is the script for a better understanding:
//patrolling
private bool mvright = true;
public Transform grDet;
//Speed up
public float speed; //default speed
public float speedwithplr; //speed if player is detected
public Transform Left; //left edge of platform
public Transform Right; //right edge of platform
public Transform Pcheck; //a point from the enemy to the edge of the platform that it is moving to
private void FixedUpdate()
{
//patrolling (making enemy move back and forth on the platform)
transform.Translate(Vector2.right * speed * Time.deltaTime);
RaycastHit2D grInfo = Physics2D.Raycast(grDet.position, Vector2.down, 2f);
if (grInfo.collider == false)
{
if (mvright == true)
{
transform.eulerAngles = new Vector3(0, -180, 0);
mvright = false;
}
else
{
transform.eulerAngles = new Vector3(0, 0, 0);
mvright = true;
}
}
//speed up if player is detected
RaycastHit2D hitLeft = Physics2D.Linecast(Pcheck.position, Left.position);
RaycastHit2D hitRight = Physics2D.Linecast(Pcheck.position, Right.position);
if (hitLeft != false && hitLeft.collider != null)
{
if (hitLeft.transform.tag == "Player" && mvright == false)
{
speed = speedwithplr;
}
}
if (hitRight != false && hitRight.collider != null)
{
if (hitRight.transform.tag == "Player" && mvright == true)
{
speed = speedwithplr;
}
}
}
Can i reset enemy's speed if they don't detect the player?
Comment