2017-09-17 11 views
1

Unity3d에서 모바일 게임을 개발 중입니다. 플레이어는 transform.position을 사용하여 손가락을 약간 높게 움직여서 Force.Mode2D로 움직이는 공을 차단해야합니다. 충동. 문제는 막대기가 너무 빨리 움직 인 경우 공이 막대기를 통과한다는 것입니다. 누구나 터치 스크린 (A.K.A Input.mousePosition)의 손가락 위치에 따라 계속 움직이는 Force (또는 다른 방식으로 작동하는) 스틱 동작을 코드 대신 사용하는 방법을 가르쳐 주실 수 있습니까?터치 스크린을 통해 transform.position없이 GameObject를 이동 하시겠습니까? (Unity3d에서)

누구나 정보가 필요한 경우 코드가 변경됩니다.

스틱 :

float defencePosX = Mathf.Clamp(Input.mousePosition.x/Screen.width * 5.6f - 2.8f , -2.8f, 2.8f); 
float defencePosY = Mathf.Clamp(Input.mousePosition.y/Screen.height * 10 - 4f, -3.3f, -0.5f); 
this.transform.position = new Vector3 (defencePosX, defencePosY, 0); 

볼 :

projectileSpeed = Random.Range (maxSpeed, minSpeed); 
projectileSwing = Random.Range (-0.001f, 0.001f); 
rb.AddForce (new Vector2 (projectileSwing * 1000, 0), ForceMode2D.Impulse); 
rb.AddForce (new Vector2 (0, projectileSpeed), ForceMode2D.Impulse); 

버그의 비디오 : 내가 그것을 빨리 이동하면 내가 그것을 명중 스틱을 이동 해달라고하지만, 경우 basicly https://youtu.be/cr2LVBlP2O0 공은 바로 간다 을 통하여. (튀는 사운드 효과가 너무 빠르면 제대로 작동하지 않습니다.)

+0

저는 조이스틱을 원치 않습니다. 기본적으로 그 계획은 스틱이 손가락이 화면 위에있는 곳에 있어야합니다. 지스 틱 (jistick)으로 움직이지 않고 손가락 위치로 움직이십시오. – Bagumus

+0

감사합니다. "스틱"이 클레어가되도록 게임 비디오를 업로드하려고합니다. – Bagumus

답변

2

피직스 오브젝트로 작업 할 때 리짓 바디 (Rigidbody) 구성 요소 만 움직이면됩니다. 그렇지 않으면 텔레포트로 해석되어 물리가 적용되지 않으며 움직임이 계산되지 않습니다.

transform.position 대신 Rigidbody.MovePosition을 사용해보세요.

또한 스틱과 볼의 리지드 바디 구성 요소가 모두 collisionDetectionMode이 '연속 다이나믹'으로 설정되어 있는지 확인하십시오. 그렇게하면 작은 움직이는 피직스 오브젝트가 프레임 사이에서 서로 충돌하게됩니다.

float defencePosX = Mathf.Clamp(Input.mousePosition.x/Screen.width * 5.6f - 2.8f , -2.8f, 2.8f); 
float defencePosY = Mathf.Clamp(Input.mousePosition.y/Screen.height * 10 - 4f, -3.3f, -0.5f); 
rb.MovePosition(new Vector3 (defencePosX, defencePosY, 0)); 
+0

굉장! 도움이 된 것을 기쁘게 생각합니다. – BJennings

1

강제로 힘을 가하기 전에 볼 포스를 Vector3.zero로 설정하거나 차단 동작의 충돌자를 바운스 패드로 사용하는 것이 좋습니다 공을 위해.

콜리 더가 블로커에 따라 정확하게 조정되었는지 확인하십시오.

문제를 표시하는 비디오는 더 잘 이해하는 데 도움이됩니다.

+0

https://youtu.be/cr2LVBlP2O0 기본적으로 내가 스틱을 움직이지 않으면 빠르게 움직이지만 공이 바로 움직입니다. (튀는 사운드 효과가 너무 빠르면 제대로 작동하지 않습니다.) – Bagumus

+0

변형 위치를 직접 변경하는 대신 물리를 사용하여 스틱을 움직이면 문제가 해결 될 것입니다. 현재 스틱은 물리학을 사용하여 스틱이 움직이지 않지만 대신 마우스 위치로 "텔레포트"하므로 스틱은 공을 통과합니다. – Doh09

+0

그게 문제라는 것을 알고 있습니다. 내 코드를 변경하는 방법에 대해 생각할 수 없다. 그래서 tranform.position 대신 force를 사용한다. 그렇게 할 수있는 기회를 가르쳐 주겠다. – Bagumus