Unity/구현

[Unity] 벽에 막히는 레이저 만들기

QuickClid 2024. 3. 15. 11:49

Preview

https://youtu.be/6ZVn8UT4Ioc

오른쪽의 Sprite Renderer가 일을 참 잘한다...!

필요한 Script

  • Laser

Laser

필요한 Component;

  • Sprite Renderer : Pivot(Left Center), Texture's Mesh Type(Full Rect)
  • Box Collider 2D : isTrigger(true)
  • Laser(Script) : 하단 참조.
using UnityEngine;

public class Laser : MonoBehaviour
{
    private SpriteRenderer sr;
    private BoxCollider2D bc;

    private void Awake()
    {
        GetReferences();
        //InitFields();
    }

    private void GetReferences()
    {
        sr = GetComponent<SpriteRenderer>();
        bc = GetComponent<BoxCollider2D>();
    }

    private void FixedUpdate()
    {
        FormLaser();
    }

    private void FormLaser()
    {
        RaycastHit2D ray = Physics2D.Raycast(transform.position, transform.right, 100f, LayerMask.GetMask("Ground"));
        sr.size = new Vector2(ray.distance, 0.75f);
        bc.size = new Vector2(ray.distance, 0.5f);
        bc.offset = new Vector2(ray.distance / 2, 0);
    }
}

실제로 사용해보기 위해서는...

Box Collider 2D Component를 지니고 있으며, Layer를 "Ground"로 설정한 GameObject가 있어야 한다.


읽어주셔서 감사합니다!

궁금한 점이 있다면 댓글로 문의주세요!