Advertisement
LeeMace

Enemy Patrol with Raycast

Mar 7th, 2023 (edited)
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.07 KB | Gaming | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Enemy : PhysicsObject
  6. {
  7.     [SerializeField] private float maxSpeed;
  8.     private RaycastHit2D rightLedgeRaycastHit;
  9.     private RaycastHit2D leftLedgeRaycastHit;
  10.     private RaycastHit2D rightWallRaycastHit;
  11.     private RaycastHit2D leftWallRaycastHit;
  12.     [SerializeField] private LayerMask raycastlayerMask;
  13.    
  14.     [SerializeField] private Vector2 rayCastOffset;
  15.     [SerializeField] private float rayCastLength =2;
  16.  
  17.     void Update()
  18.     {
  19.         targetVelocity = new Vector2(maxSpeed, 0);
  20.         rightLedgeRaycastHit = Physics2D.Raycast(new Vector2(transform.position.x + rayCastOffset.x, transform.position.y + rayCastOffset.y), Vector2.down, rayCastLength);
  21.         Debug.DrawRay(new Vector2(transform.position.x + rayCastOffset.x, transform.position.y + rayCastOffset.y), Vector2.down * rayCastLength, Color.blue);
  22.  
  23.         leftLedgeRaycastHit = Physics2D.Raycast(new Vector2(transform.position.x -rayCastOffset.x, transform.position.y -rayCastOffset.y), Vector2.down, rayCastLength);
  24.         Debug.DrawRay(new Vector2(transform.position.x -rayCastOffset.x, transform.position.y -rayCastOffset.y), Vector2.down * rayCastLength, Color.blue);
  25.        
  26.          //check for right wall
  27.         rightWallRaycastHit = Physics2D.Raycast(new Vector2(transform.position.x, transform.position.y), Vector2.right, rayCastLength, raycastlayerMask);
  28.         Debug.DrawRay(new Vector2(transform.position.x, transform.position.y), Vector2.right* rayCastLength, Color.red);
  29.         if (rightWallRaycastHit.collider != null)
  30.         {
  31.             direction = -1;
  32.         }      
  33.  
  34.         //check for left wall
  35.         leftWallRaycastHit = Physics2D.Raycast(new Vector2(transform.position.x, transform.position.y), Vector2.left, rayCastLength, raycastlayerMask);
  36.         Debug.DrawRay(new Vector2(transform.position.x, transform.position.y), Vector2.left * rayCastLength, Color.red);
  37.         if (leftWallRaycastHit.collider != null)
  38.         {
  39.             direction = 1;
  40.         }
  41.     }
  42. }
  43.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement