簡體   English   中英

如何在Unity上為恐龍游戲添加移動觸摸

[英]How can i add mobile touch for my Dinosaur game on Unity

我正在統一編輯Google Chrome瀏覽器的恐龍游戲。 我想在移動設備上運行該游戲,但無法添加移動設備觸摸。 我只想要這款游戲的觸摸功能。 當我觸摸屏幕時,它將跳轉或開始新的游戲。 (我不需要鴨子選項。)我希望你們能幫助我。

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上運行良好,我需要在具有觸摸功能的手機上進行操作。

您可以使用此代碼

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.");

    }
}

您需要從Update函數中調用此函數,因為狀態會在每幀中重置。 除非用戶釋放鼠標按鈕並再次按下它,否則它不會返回true。 按鈕值為:左按鈕為0,右按鈕為1,中按鈕為2。

網址: https//docs.unity3d.com/ScriptReference/Input.GetMouseButtonDown.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM