using UnityEngine; public class FlyingEnemyMove : MonoBehaviour { // TODO : 임시 코드 public float moveSpeed = 3f; public float jumpForce = 5f; public float gravityScale = 0f; public float groundCheckDistance = 0.2f; // 지면 감지를 위한 거리 public LayerMask groundLayer; // 지면 레이어 마스크 private Rigidbody2D rb; private bool isGrounded; // 지면 여부 void Start() { rb = GetComponent(); rb.gravityScale = gravityScale; } void FixedUpdate() { // 지면 감지 isGrounded = Physics2D.Raycast(transform.position, Vector2.down, groundCheckDistance, groundLayer); // 이동 로직 (예시: 좌우 이동) float horizontalInput = Random.Range(-1f, 1f); // 랜덤 이동 Vector2 velocity = rb.linearVelocity; velocity.x = horizontalInput * moveSpeed; rb.linearVelocity = velocity; // 점프 (예시: 일정 확률로 점프) if (isGrounded && Random.value < 0.01f) // 1% 확률로 점프 { rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse); } } void OnCollisionEnter2D(Collision2D collision) { // 충돌 처리 로직 (예시: 벽에 닿으면 튕겨나가기) if (collision.gameObject.CompareTag("Wall")) { // 충돌한 방향 반대로 힘을 가하여 튕겨내기 Vector2 bounceDirection = (transform.position - collision.transform.position).normalized; rb.AddForce(bounceDirection * 5f, ForceMode2D.Impulse); } } }