2016-10-04 3 views
0

Touch 입력을 사용하여 게임 개체를 끌는 방법을 알고 있습니다. 하지만 내가해야 할 일은 드래그 속도를 체크하고 오브젝트를 조금 더 움직이게하는 것입니다. 따라서 객체를 빠르게 드래그하여 놓으면 드래그 한 방향으로 조금 움직일 것입니다. 지금은 손가락을 뺀 위치에서 멈 춥니 다. 누구나 이것이 어떻게 이루어 졌는지 알 수 있습니까? 여기에 힘을 추가하려고 - -easing with easing

 private Vector3 dist, distEnd; 
     float posX; 
     float posY; 

    void OnMouseDown() { 

      dist = Camera.main.WorldToScreenPoint (transform.position); 
      posX = Input.mousePosition.x - dist.x; 
      posY = Input.mousePosition.y - dist.y; 


     } 

     void OnMouseDrag() 
     { 
      Vector3 curPos = new Vector3 (Input.mousePosition.x - posX, Input.mousePosition.y - posY, dist.z); 
      Vector3 worldPos = Camera.main.ScreenToWorldPoint (curPos); 
      transform.position = worldPos; 

     } 

     void OnMouseUp() { 
      distEnd = Camera.main.WorldToScreenPoint (transform.position); 


     } 
다음

내가 객체에 RigidBody2d을 추가하지만 난 속도와 드래그/마우스의 방향을 계산해야 가정 - 전에 :

내가 지금 가지고있는 것은 객체에 힘을 가할 수 있습니까?

GetComponent<Rigidbody2D>().AddForce (Vector2 (FORCE_DIRECTION_X, FORCE_DIRECTION_Y)); 

하지만 드래그 속도와 속도를 계산하는 데 어려움이 있습니다.

도움을 주시면 감사하겠습니다.

감사합니다.

+0

은 물론} 이렇게 설정 시간을 "SmoothTime을"변수 변경하지만 당신은 샘플로 제공 할 수 있습니다 대답을위한 기초를 만드는 코드? –

+0

죄송합니다 - 여기까지 코드가 있습니다. –

답변

0

맞아요, 드디어 답을 찾았습니다 :-) 나는 다른 사람들을위한 스크립트를 포함 시켰습니다. (해결책은 생각 나지 않았습니다.)

어쩌면 누군가가뿐만 아니라 그것을 사용할 수 있습니다 - 드래그 속도가 0

using UnityEngine; 
using System.Collections; 

public class dragMap : MonoBehaviour { 


private Vector3 _screenPoint; 
private Vector3 _offset; 
private Vector3 _curScreenPoint; 
private Vector3 _curPosition; 
private Vector3 _velocity; 
private bool _underInertia; 
private float _time = 0.0f; 
public float SmoothTime = 2; 
void Update() 
{ 
    if(_underInertia && _time <= SmoothTime) 
    { 
     transform.position += _velocity; 
     _velocity = Vector3.Lerp(_velocity, Vector3.zero, _time); 
     _time += Time.smoothDeltaTime; 
    } 
    else 
    { 
     _underInertia = false; 
     _time = 0.0f; 
    } 
} 
void OnMouseDown() 
{ 
    _screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position); 
    _offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, _screenPoint.z)); 
    //Screen.showCursor = false; 
    _underInertia = false; 
} 
void OnMouseDrag() 
{ 
    Vector3 _prevPosition = _curPosition; 
    _curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _screenPoint.z); 
    _curPosition = Camera.main.ScreenToWorldPoint(_curScreenPoint) + _offset; 
    _velocity = _curPosition - _prevPosition; 
    transform.position = _curPosition; 
} 
void OnMouseUp() 
{ 
    _underInertia = true; 
    //Screen.showCursor = true; 
} 

전에, 우리가 알고

관련 문제