728x90
C# 유니티 함수 OnCollisionEnter & OnTriggerEnter
충돌 메서드의 형태는 OnCollisionEnter()와 OnTriggerEnter()이 있다.
- 게임 프로그래밍/C#
- · 2021. 8. 8.
728x90
충돌 메서드의 형태는 OnCollisionEnter()와 OnTriggerEnter()이 있다.
그라운드를 좌/우로 회전하게 하는 스크립트를 작성했다. 먼저 float 타입의 zRotation 변수를 선언하고 현재 z축의 회전량인 transform.localEulerAngles.z을 저장했다. 그리고 zRotation 값에 사용자의 Input이 있는 경우 -1(왼쪽), +1(오른쪽)만큼 움직일 수 있게 Input.GetAxis("Horizontal)"을 추가했다. 여기서 Input값을 -로 빼주었는데, 유니티 상에서 오른쪽으로 회전하려면 - 값이 들어와야 하는데 우클릭이 +1로 나타나기 때문에 반대로 움직이도록 하기 위함이다.(+로 더해주면 우클릭 시 ground가 왼쪽으로 도는 현상 발생) 그리고 그 zRotation 변화값을 new Vector3라는 새로운 transform 값으로 지정해주었다...
유니티에서는 인스펙터 창에서 콤포넌트를 추가해주는 것 외에, 스크립트로 직접 콤포넌트를 만들어줄 수 있다. Start()메서드 내 Rigidbody 콤포넌트를 다음과 같이 추가해 주었다. myRigidbody라는 변수 이름을 설정해 주었고, GetComponent()를 가져오면 된다. Debug.Log값은 인스펙터 창의 Rigidbody 콤포넌트에서 Use Gravity 체크박스를 활성화하면 True 값을, 비활성화하면 False를 리턴하게 된다. 그 다음으로는 SphereCollider를 myCollider 멤버 변수로 선언해주었다. Start()메서드 안에서 GetComponent()로 콤포넌트를 가져온 후, Update()메서드 내 myCollider.radius 즉, 원형 콜라이더의 반지름이 매 ..
새로운 vector3 값으로 transform.position하는 스크립트문을 작성했다. 먼저 float 형식으로 delta = -0.1f 값을 선언했는데 이는 매 프레임마다 z 값의 변화량을 의미한다. 현재 오브젝트는 (0, 1, 7)의 위치값을 갖는데 현 위치값에서 x 델타값만 연산되는 변수 newXposition를 새로 생성했다. transform.position = new Vector을 선언해서 위치값을 움직이는데 Update()가 실행되는 동안 델타값이 적용된 x값을 갖게 되었다. 그리고 if조건문을 활용하여 x좌표가 -6보다 작아지는 경우, 델타값을 -0.1f에서 0.1f로 바꿔주어 반대로 움직이게 하였고, 마찬가지로 6보다 커지는 경우, 다시 -0.1f로 바꿔 -6과 6사이의 x값만 갖도록 ..
유니티에서 기울어진 바닥에 공을 떨어트렸을 때, 매 프레임마다 공이 이동한 거리를 구하는 스크립트를 작성해보았다. float 형식으로 최초 시작지점인 startingPoint를 선언해주었고, Vector3 값 중 Z값의 변화를 측정하기 위해 처음 한 번 실행되는 Start()메서드에 startingPoint = transform.position.z로 시작지점의 Z값을 찍어주었다. 그리고 Update()메서드 내 지역변수로 float형식의 distatnce를 선언해 주었고, distance는 매 프레임마다 이동하는 tranform.position.z 값에서 startingPoint를 빼주어 계산하도록 하였다. Debug.Log(distance)를 선언해주면 완성! startPoint의 z값이 0으로 찍히고..