Unity

Rigidbody Collision Stopping Issue

9월 16, 2021 Unity No comments , ,

문제 증상

Ball을 Rigidbody를 Dynamic으로 설정시 Reflect를 아래와 같은 형태로 추가

private void OnCollisionEnter2D(Collision2D collision)
{
    this.Direction = Vector2.Reflect(this.Direction, collision.contacts[0].normal);
}

private void FixedUpdate()
{
    this.RigiBody.velocity = this.Direction * this.Speed * Time.fixedDeltaTime;
}

정상적으로 Block에 부딪 혔을때 Reflect의 의해 Ball에 방향이 변경 됨.
하지만, 간혹 Ball이 Stopping 되는 증상이 발생
Debugging 결과 아래와 같이 OnCollisionStay2D()에서 반복적으로 Call되는것을 확인.
Resolution)
동일한 Block인 경우 강제로 Direction을 설정하여, 멈추는 것을 벗어나도록 수정

private void OnCollisionStay2D(Collision2D collision)
{
    Block collisionBlock = collision.gameObject.GetComponent<Block>();
    if (collisionBlock != null &amp;&amp; this.LastCollisionBlock2DInStay == collisionBlock)
    {
        Debug.Log("MyBall::OnCollisionStay2D::It's the same as last collison block.");
        this.Direction = new Vector2(1, 1);
    }
    this.LastCollisionBlock2DInStay = collisionBlock;
}

Debug.Log

8월 14, 2021 Unity No comments , , ,

Unity에서 Log의 Color 설정

Debug.Log ("<color=green>Menu State</color> OnActive");
Debug.Log ("<color=red>Menu State</color> OnDeactivate");
Debug.Log ("<color=yellow>Menu State</color> OnUpdate");

Unity Tips

8월 14, 2021 Unity No comments , ,

Does not Touch  / Mouse Down


문제점

Unity MonoBehaior에 아래와 같이 OnMouseDown() or IPointerDownHandler를 사용 하였지만,동작 하지 않음

public class Tile : MonoBehaviour, IPointerDownHandler 
{
    void OnMouseDown() 
    { 
        Debug.Log("OnMouseUp"); 
    } 
    public void OnPointerDown(PointerEventData eventData) 
    { 
        Debug.Log(this.gameObject.name + " Was Clicked."); 
    }
}

해결책

Main Carmera의 Position.Z를 0에서 -10로 변경 후 정상 동작