2015-09-28 105 views
0

我在創建一個腳本時遇到了一些問題,一旦玩家點擊一個gameObject,該對象將會跟隨鼠標。一旦鼠標再次被點擊,該對象將被丟棄。用鼠標拖動遊戲對象

下面是腳本:

public float distance = 10; 

public void OnMouseDrag() 
{ 
    Vector3 mousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, distance); 
    Vector3 objPosition = Camera.main.ScreenToWorldPoint(mousePosition); 

    transform.position = objPosition; 
} 

這工作得很好,但問題是,如果玩家(主凸輪)有任何形式的在其運動的腳本,如它還是這個角色管理腳本其父母,那麼拾取的gameObject就會移動,就好像它試圖擺脫鼠標一樣。

public float speed = 6.0f; 
public float jumpSpeed = 8.0f; 
public float gravity = 20.0f; 
private Vector3 moveDirection = Vector3.zero; 

void Update() 
{ 
    CharacterController controller = GetComponent<CharacterController>(); 

    if(Input.GetKey(KeyCode.LeftShift)) 
    { 
     speed = 15.0f; 
    }else 
    { 
     speed = 6.0f; 
    } 

    if(controller.isGrounded) 
    { 
     moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); 

     moveDirection = transform.TransformDirection(moveDirection); 

     moveDirection *= speed; 
    } 

    if(Input.GetButton("Jump")) 
    { 
     moveDirection.y = jumpSpeed; 
    } 

    moveDirection.y -= gravity * Time.deltaTime; 
    controller.Move(moveDirection * Time.deltaTime); 

    float rotateRight = Input.GetAxis("Mouse X"); 

    transform.Rotate(0, rotateRight, 0); 
} 

如果上面的腳本被禁用,那麼GameObject不會嚇壞了,它可以正常工作。

我知道在字符控制器中進行的輸入是以某種方式影響頂部腳本,鼠標移動使得gameObject在該方向上轉換,同時試圖保持鼠標上的某個點。

但是我怎麼做,所以它不會影響它。

+0

試着將你的更新一個布爾值,獲取切換上拖動'如果(isBeingDragged)回報;'。無論何時都有效地禁用腳本。 –

回答

0

我敢打賭,拖動鼠標是在你移動之前發生的。

嘗試把你拖邏輯LateUpdate(),因此它可以accommidate新位置