골드메탈 강의

Animtor.Getbool, Raycast

게임 프로그래머 2025. 1. 24. 20:34

Animator.Getbool

Setbool과 달리 매개변수로 전달한 애니메이터 값을 가져올 수 있습니다.

타입은 bool 형

 

// Jump
        if (Input.GetButtonDown("Jump") && !animator.GetBool("isJumping"))
        {
            rb2d.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
            animator.SetBool("isJumping", true);
        }

 

점프 방지 코드를 애니메이터 만으로 간단히 작성 가능(jump count 설정 불필요)


Raycast

가상의 선(Ray)을 쏴서 그 선이 충돌하는 오브젝트의 거리, 위치등에 대한 정보를 반환합니다.

https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Physics.Raycast.html

 

Unity - Scripting API: Physics.Raycast

Description Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the Scene. To select which layers a ray should collide with, use a LayerMask. Specifying queryTriggerInteraction allows you to control wheth

docs.unity3d.com

 

RaycastHit2D raycastHit2D = Physics2D.Raycast(rb2d.position, Vector3.down, 1,LayerMask.GetMask("Platform"));

 

 

레이캐스트는 physics를 사용합니다. (2D는 뒤에 2D가 붙음)

캐릭터 RigidBody Position에서 아래로 거리 1만큼 Ray를 쏴서 

"Platform" 레이어만 레이캐스트의 충돌 대상으로 설정합니다.  

 

raycastHit2D.collider를 통해 충돌여부를 확인할 수 있습니다. (없을경우 null)

 

Debug.DrawRay(rb2d.position, Vector3.down, Color.red);

 

Debug를 통해 ray가 쏘는 범위를 육안으로 확인 가능합니다.