2016-08-30 3 views
0

버튼 구성 요소가있는 이미지가 있습니다. 나는 인벤토리와 같은 것을 만들고 있는데, 클릭 할 때 Paper Going처럼 보이게해야하고, 다시 클릭 할 때 내려야한다.클릭 한 다음 위로 이동하고 다시 클릭 한 다음 아래로 이동합니다

다음은 자동으로 수행 할 수있는 코드입니다. 수동으로 수행 할 수 있습니까? 도와주세요.

using UnityEngine; 
using System.Collections; 

public class BMM : MonoBehaviour { 
    public Vector3 pointB; 

    IEnumerator Start() 
    { 
     var pointA = transform.position; 

      yield return StartCoroutine(MoveObject(transform, pointA, pointB, 3.0f)); 
      yield return StartCoroutine(MoveObject(transform, pointB, pointA, 3.0f)); 

    } 

    IEnumerator MoveObject(Transform thisTransform, Vector3 startPos, Vector3 endPos, float time) 
    { 
     var i = 0.0f; 
     var rate = 1.0f/time; 
     while (i < 1.0f) 
     { 
      i += Time.deltaTime * rate; 
      thisTransform.position = Vector3.Lerp(startPos, endPos, i); 
      yield return null; 
     } 
    } 
} 
+0

다음을 사용하십시오 : http://wiki.unity3d.com/index.php?title=MoveObject –

답변

1

나는 당신이하려는 일을 잘 모르겠다. 올바르게 이해하면 전환 버튼이 필요합니다. 전환 버튼은 클릭했을 때 올라가고 (스위치가 켜지면) 올라가고 다시 클릭하면 내려갑니다 (스위치 오프). 개체가 부착 된 Button 구성 요소가 있기 때문에 IPointerClickHandler 인터페이스는 작동

public class BMM : MonoBehaviour, IPointerClickHandler 
{ 
    public Vector3 pointB; 
    private Vector3 pointA; 

    private bool isClicked; 

    void Start() 
    { 
     pointA = transform.position; 
     isClicked= false; 
    } 

    public void OnPointerClick (PointerEventData eventData) 
    { 
     if (isClicked == false) 
     { 
      isClicked = true; 
      yield return StartCoroutine(MoveObject(transform, pointA, pointB, 3.0f)); 
     } 
     else 
     { 
      isClicked = false; 
      yield return StartCoroutine(MoveObject(transform, pointB, pointA, 3.0f)); 
     } 
    } 

    IEnumerator MoveObject(Transform thisTransform, Vector3 startPos, Vector3 endPos, float time) 
    { 
     var i = 0.0f; 
     var rate = 1.0f/time; 
     while (i < 1.0f) 
     { 
      i += Time.deltaTime * rate; 
      thisTransform.position = Vector3.Lerp(startPos, endPos, i); 
      yield return null; 
     } 
    } 
} 

주 :이 당신이 무엇을하려고하는 경우,이 같은 것을 건의 할 것입니다. Button 구성 요소를 제거하면 작동하지 않습니다.

또한 상단에 IPointerClickHandler을 입력하면 인터페이스 이름을 마우스 오른쪽 버튼으로 클릭하고 Implicit Implement (또는 이와 비슷한) 옵션을 선택하면 OnPointerClick 메서드가 만들어집니다.

관련 문제