为什么我的Unity 2D Platformer游戏的Android按钮控制器不能正常工作?

avwztpqn  于 2022-12-09  发布在  Android
关注(0)|答案(1)|浏览(132)

所以在这里我是一个游戏开发人员谁最近使用统一,并已几乎放弃处理这些东西。
我目前正在开发一款2D平台游戏,还有一个遗留下来的,安卓控制按钮。
我使用“标准资产”,Unity的“CrossPlatformInput”来创建我需要的Android控制器。
而且经过测试,移动游戏中的人物根本不起作用,我已经按照指南仔细又仔细地操作了很多次,结果还是一样
有谁能告诉我发生了什么吗?
这是我正在使用的失败代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;

public class Pemain : MonoBehaviour
{
    public Rigidbody2D rb;
    public float movespeed = 5f;
    public int jumppower;
    public Transform groundCheck;
    public float groundCheckRadius;
    public LayerMask whatIsGround;
    private bool onGround;
    private Animator anim;
    private int facing; 

    void Start ()
    {
        rb = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();
        jumppower = 5;
        facing = 1;
    }

    void FixedUpdate ()
    {
        onGround = Physics2D.OverlapCircle (groundCheck.position,groundCheckRadius,whatIsGround);
    }

    void Update () {

        float move = CrossPlatformInputManager.GetAxis("Horizontal");

        if (Input.GetKey(KeyCode.LeftArrow))
        {
            rb.velocity = new Vector2 (-movespeed, rb.velocity.y);
            anim.SetBool ("Walking", true);
            if (facing == 1)
            {
                transform.localScale = new Vector3 (-1f, 1f, 1f);
                facing = 0;
            }
        } else if (Input.GetKey(KeyCode.RightArrow))
        {
            rb.velocity = new Vector2(movespeed, rb.velocity.y);
            anim.SetBool ("Walking", true);
            if (facing == 0)
            {
                transform.localScale = new Vector3 (1f, 1f, 1f);
                facing = 1;
            }
        } else
        {
            anim.SetBool ("Walking", false);
        }
        if (Input.GetKey(KeyCode.Space) && onGround)
        {
            rb.velocity = new Vector2 (rb.velocity.x,jumppower);
        }
    }
}
roejwanj

roejwanj1#

你的代码中根本没有使用move变量,所以CrossPlatformInput不能对你的角色的移动产生任何影响。你应该把代码修改成类似这样的东西。

float move = CrossPlatformInputManager.GetAxis("Horizontal");

if (move < -0.01f)
    {
        rb.velocity = new Vector2 (-movespeed, rb.velocity.y);
        anim.SetBool ("Walking", true);
        if (facing == 1)
        {
            transform.localScale = new Vector3 (-1f, 1f, 1f);
            facing = 0;
        }
    } else if (move > 0.01f)
    {
        rb.velocity = new Vector2(movespeed, rb.velocity.y);
        anim.SetBool ("Walking", true);
        if (facing == 0)
        {
            transform.localScale = new Vector3 (1f, 1f, 1f);
            facing = 1;
        }
    }

您可能还需要提高C#技能,因为同时学习Unity编程是非常困难的。

相关问题