【问题标题】:How can i add mobile touch for my Dinosaur game on Unity如何在 Unity 上为我的恐龙游戏添加移动触控
【发布时间】:2017-07-29 00:43:44
【问题描述】:

我正在统一编辑 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 上通过鼠标单击运行良好,我需要在具有触摸功能的移动设备上进行。

【问题讨论】:

  • Input.GetMouseButtonDown(0) 也可以用于触摸。我的意思是来吧。我用了 30 秒的时间在谷歌上找到了它。
  • 也许像this
  • 谢谢你我现在修好了。你说得对,这太基础了,但我是新来的。

标签: c# android unity3d


【解决方案1】:

您可以使用此代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多