2017-07-28 20 views
0

我正在編輯Google Chrome的恐龍遊戲。我想在手機上運行這款遊戲,但我未能添加手機觸控。我只想要這個遊戲的觸摸功能。當我觸摸屏幕時,它會跳轉或開始新的遊戲。 (我不需要鴨子選項。)我希望你們幫助我。如何在Unity上爲我的恐龍遊戲添加移動觸摸

using UnityEngine; 
using System.Collections; 

public class JumpAndDuck : MonoBehaviour 
{ 
    public Level level = null; 
    public GameObject ground = null; 
    public Collider2D standingCollider = null; 
    public Collider2D duckingCollider = null; 
    public AudioSource jumpAudioSource = null; 
    public AudioClip jumpAudioClip = null; 
    private Animator animator; 
    private bool grounded = true; 
    private bool ducking = false; 
    private float jumpVelocity = 0f; 
    private float gravity = 144f; 
    private Vector3 startVector; 

    void Start() 
    { 
     animator = GetComponent<Animator>(); 
     standingCollider.enabled = true; 
     duckingCollider.enabled = false; 
    } 

    void Update() 
    { 
     if (grounded) 
     { 
      if (Input.GetButton("Jump") || Input.GetAxis("Vertical") > 0) 
      { 
       jump(); 
      } 
      else if (Input.GetAxis("Vertical") < 0) 
      { 
       duck(); 
      } 
      else 
      { 
       stand(); 
      } 
     } 
     else 
     { 
      transform.position += jumpVelocity * Vector3.up * Time.deltaTime; 
      jumpVelocity -= gravity * Time.deltaTime; 

      if (transform.position.y < ground.transform.position.y) 
      { 
       grounded = true; 
       transform.position = startVector; 
       animator.SetBool("jumping", false); 
      } 
      else if (3 < transform.position.y && 20 < jumpVelocity) 
      { 
       jumpVelocity = 20; 
      } 
     } 
    } 

    void OnCollisionEnter2D(Collision2D collision) 
    { 
     if (collision.gameObject == ground) 
     { 
      grounded = true; 
      transform.position = startVector; 
      animator.SetBool("jumping", false); 
     } 
    } 

    void OnCollisionExit2D(Collision2D collision) 
    { 
     if (collision.gameObject == ground) 
     { 
      grounded = false; 
      animator.SetBool("jumping", true); 
     } 
    } 

    void jump() 
    { 
     if (!grounded) 
     { 
      return; 
     } 

     stand(); 
     if (jumpAudioSource && jumpAudioClip) 
     { 
      jumpAudioSource.PlayOneShot(jumpAudioClip, 1); 
     } 
     startVector = transform.position; 
     jumpVelocity = 40f + level.mainSpeed/10f; 
     grounded = false; 
     animator.SetBool("jumping", true); 
    } 

    void duck() 
    { 
     if (ducking || !grounded) 
     { 
      return; 
     } 

     standingCollider.enabled = false; 
     duckingCollider.enabled = true; 
     ducking = true; 
     animator.SetBool("ducking", true); 
    } 

    void stand() 
    { 
     if (!ducking) 
     { 
      return; 
     } 

     standingCollider.enabled = true; 
     duckingCollider.enabled = false; 
     ducking = false; 
     animator.SetBool("ducking", false); 
    } 
} 

代碼和項目不是我的。它在PC上運行良好,鼠標點擊,我需要在具有觸摸功能的移動設備上進行操作。

+0

Input.GetMouseButtonDown(0)可被用於還觸摸。我的意思是來吧。我在谷歌上找到了它,這是我30秒的時間。 – Thalthanas

+0

也許像[this](https://docs.unity3d.com/460/Documentation/ScriptReference/Input.GetTouch.html)? –

+0

謝謝,我現在修復它。你是對的,這是非常基本的,但我在這裏是新的。 –

回答

0

您可以使用此代碼

using UnityEngine; 
using System.Collections; 

public class ExampleClass : MonoBehaviour { 
    void Update() { 
     if (Input.GetMouseButtonDown(0)) 
      Debug.Log("Pressed left click."); 

     if (Input.GetMouseButtonDown(1)) 
      Debug.Log("Pressed right click."); 

     if (Input.GetMouseButtonDown(2)) 
      Debug.Log("Pressed middle click."); 

    } 
} 

你需要調用從更新功能這一功能,因爲國家越來越重置每一幀。直到用戶釋放鼠標按鈕並再次按下它纔會返回true。按鈕值爲左按鈕爲0,右按鈕爲1,中按鈕爲2。

URL:https://docs.unity3d.com/ScriptReference/Input.GetMouseButtonDown.html

相關問題