728x90
728x90
그라운드를 좌/우로 회전하게 하는 스크립트를 작성했다. 먼저 float 타입의 zRotation 변수를 선언하고 현재 z축의 회전량인 transform.localEulerAngles.z을 저장했다. 그리고 zRotation 값에 사용자의 Input이 있는 경우 -1(왼쪽), +1(오른쪽)만큼 움직일 수 있게 Input.GetAxis("Horizontal)"을 추가했다. 여기서 Input값을 -로 빼주었는데, 유니티 상에서 오른쪽으로 회전하려면 - 값이 들어와야 하는데 우클릭이 +1로 나타나기 때문에 반대로 움직이도록 하기 위함이다.(+로 더해주면 우클릭 시 ground가 왼쪽으로 도는 현상 발생) 그리고 그 zRotation 변화값을 new Vector3라는 새로운 transform 값으로 지정해주었다...
움직이는 ball 오브젝트를 카메라가 따라가는 연출을 주는 스크립트를 작성했다. GameObject ball이라는 멤버변수를 선언하고, Start()메서드에서 Gameobject.Find 함수를 적용했다. 그리고 Update() 내 카메라의 position을 new Vector3의 ball.transform.position 좌표 값에 적용했다. ball.transform.position에 적용된 정수(+3, -14)는 오브젝트와 적당한 거리를 두고 따라가도록 설정한 임의값이다.
유니티에서는 인스펙터 창에서 콤포넌트를 추가해주는 것 외에, 스크립트로 직접 콤포넌트를 만들어줄 수 있다. 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값만 갖도록 ..
True / False로만 결과값을 갖는 bool 형식을 사용하여 스크립트를 작성했다. 기울어진 바닥에 공을 떨어트렸을 때 매 프레임마다 공이 이동한 거리를 측정하여 if 조건문으로 다음과 같이 표현했다. 하지만 이런 경우, 프레임마다 Debug.Log()가 찍히기 때문에 너무 많다. 따라서 이동거리가 "20을 넘었을 때" 또는 "30을 넘었을 때" Debug.Log()값을 딱 한 번 찍게 만들기 위해 bool 형식을 사용했다. 먼저 bool타입으로 shouldPrintOver20과 shouldPrintOver30 멤버변수를 선언해주었다. 그리고 if(distance>30)을 만족했을 때 하위 if(shouldPrintOver30) 조건문을 한번 더 선언해 주었다. 즉, 30을 넘겼을 때 먼저 Debug..
유니티에서 기울어진 바닥에 공을 떨어트렸을 때, 매 프레임마다 공이 이동한 거리를 구하는 스크립트를 작성해보았다. float 형식으로 최초 시작지점인 startingPoint를 선언해주었고, Vector3 값 중 Z값의 변화를 측정하기 위해 처음 한 번 실행되는 Start()메서드에 startingPoint = transform.position.z로 시작지점의 Z값을 찍어주었다. 그리고 Update()메서드 내 지역변수로 float형식의 distatnce를 선언해 주었고, distance는 매 프레임마다 이동하는 tranform.position.z 값에서 startingPoint를 빼주어 계산하도록 하였다. Debug.Log(distance)를 선언해주면 완성! startPoint의 z값이 0으로 찍히고..