2015-05-05 45 views
0

我要開發一個簡單的遊戲,稱爲垃圾收集。如果我點擊一個垃圾,角色需要走到某些垃圾並收集它。開始時,角色位於屏幕的中間位置。當我們點擊角色的左側,左邊的動畫需要播放。另一方面,當我們點擊角色的右側時,需要播放動畫的右邊走路。在此應用中如何獲取點擊位置,以及該角色動畫到那個被點擊的位置如何將2D角色(帶動畫)移動到C#中的鼠標點擊位置?

public class mousepos : MonoBehaviour { 

private Animator anim; 
public float speed = 1.5f; 
private Vector3 target; 

void Start() { 
anim = GetComponent<Animator>(); 
    target = transform.position; 
} 

void Update() { 
    if (Input.GetMouseButtonDown (0)) { 
        if (**Input.mousePosition.x <= 500**) { //move skeleton on X axis to the left 
          target = Camera.main.ScreenToWorldPoint (Input.mousePosition); 
          target.z = transform.position.z; 
          transform.localScale = new Vector3(1, 1, 1); 
          anim.SetInteger ("Direction", 1); 

        } else if (Input.mousePosition.x >= 500) { 

          target = Camera.main.ScreenToWorldPoint (Input.mousePosition); 
          target.z = transform.position.z; 
          transform.localScale = new Vector3(-1, 1, 1); 
          anim.SetInteger ("Direction", 1); 
        } 

      } 
    transform.position = Vector3.MoveTowards(transform.position,    target, speed * Time.deltaTime); 
}  
} 
+0

你的意思是你的性格直接跳到點擊的地方,在動畫不動? – Axarydax

+0

不..我不是那個意思......我想把我的角色像正常的人類走路那樣移動到光標方向。 –

+0

目前還不清楚你有什麼問題。角色如何移動到目標上(如移動速度等),或者在角色移動時開始/停止動畫有問題嗎? –

回答

1

不確定你到底在問什麼,但會是這樣的工作嗎?

if (Input.GetMouseButtonDown (0)) { 
    target = Camera.main.ScreenToWorldPoint (Input.mousePosition); 
    target.z = transform.position.z; 
    if(target.x > transform.position.x) transform.localScale = new Vector3(1, 1, 1); 
    else if(target.x < transform.position.x) transform.localScale = new Vector3(-1, 1, 1); 
    anim.SetInteger ("Direction", 1); 
} 
transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime); 
+0

謝謝你的回答 –

0

我得到了它.. :)

公共類mousePos結構:MonoBehaviour {

private Animator anim; 
    public float speed = 1.5f; 
    private Vector3 target; 
    private Vector3 MousePosition; 
    private Vector3 PlayerPosition; 
    void Start() { 
    anim = GetComponent<Animator>(); 


    target = transform.position; 

    } 
    void Update() { 

      if (Input.GetMouseButtonDown (0)) { 

      target = Camera.main.ScreenToWorldPoint (Input.mousePosition); 
      target.z = transform.position.x; 

      Debug.Log ("traaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + target.z); 
      if (target.x <= target.z) { 


      transform.localScale = new Vector3 (1, 1, 1); 
     anim.SetInteger ("Direction", 1); 

    } 
    else if (target.x >= target.z) { 

          transform.localScale = new Vector3 (-1, 1, 1); 
          anim.SetInteger ("Direction", 1); 
        } 



      } 

     transform.position = Vector3.MoveTowards (transform.position, target, speed * Time.deltaTime); 

    } 
    } 
相關問題