2D 基本运动 UNITY

2024-02-20

目前我的角色在键盘上完美运行,但是当我通过 3 个 UI 按钮将你的动作转换为触摸时(我也尝试过 UI 图像,但成功了),我没有成功

它基本上是向右、向左、跳跃。

应该如何做才能使其遵循以下说明:

当用户按下方向键时,角色不会停止行走,直到用户释放按钮,而当按下跳跃键时,玩家会跳跃。

这是我用来通过键盘移动的脚本!

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour
{

    public float velocity;

    public Transform player;
    private Animator animator;

    public bool isGrounded;
    public float force;

    public float jumpTime = 0.4f;
    public float jumpDelay = 0.4f;
    public bool jumped = false;
    public Transform ground;

    private Gerenciador gerenciador;

    // Use this for initialization
    void Start ()
    {
        gerenciador = FindObjectOfType (typeof(Gerenciador)) as Gerenciador;
        animator = player.GetComponent<Animator> ();
        gerenciador.StartGame ();
    }

    // Update is called once per frame
    void Update ()
    {

        Move ();

    }

    void Move ()
    {

        isGrounded = Physics2D.Linecast (this.transform.position, ground.position, 1 << LayerMask.NameToLayer ("Floor"));
        animator.SetFloat ("run", Mathf.Abs (Input.GetAxis ("Horizontal")));
        if (Input.GetAxisRaw ("Horizontal") > 0) {

            transform.Translate (Vector2.right * velocity * Time.deltaTime);
            transform.eulerAngles = new Vector2 (0, 0);
        }
        if (Input.GetAxisRaw ("Horizontal") < 0) {

            transform.Translate (Vector2.right * velocity * Time.deltaTime);
            transform.eulerAngles = new Vector2 (0, 180);
        }

        if (Input.GetButtonDown ("Vertical") && isGrounded && !jumped) {

            //  rigidbody2D.AddForce (transform.up * force);
            GetComponent<Rigidbody2D> ().AddForce (transform.up * force);
            jumpTime = jumpDelay;
            animator.SetTrigger ("jump");
            jumped = true;
        }

        jumpTime -= Time.deltaTime;

        if (jumpTime <= 0 && isGrounded && jumped) {

            animator.SetTrigger ("ground");
            jumped = false;

        }
    }
}

C# 如果可能的话,请记住我对这些按钮使用 Canvas UI =]


对于跳跃动作,您需要一个按钮。游戏对象->UI->按钮。将图像替换为您自己的图像,然后单击“设置原始大小”。将按钮的大小重新调整为适合您的游戏的大小。

将按钮附加到跳跃按钮下面的插槽脚本。

public Button jumpButton;

void jumpButtonCallBack()
{
    //  rigidbody2D.AddForce (transform.up * force);
    GetComponent<Rigidbody2D>().AddForce(transform.up * force);
    jumpTime = jumpDelay;
    animator.SetTrigger("jump");
    jumped = true;
}


void OnEnable(){
    //Un-Register Button
    jumpButton.onClick.AddListener(() => jumpButtonCallBack());
}

void OnDisable(){
    //Un-register Button
    jumpButton.onClick.RemoveAllListeners();
}

For the Left and Right移动按钮,你应该not use Button他们的组件就像跳跃按钮。你必须实施虚拟操纵杆使其看起来更真实。 Unity 有一个名为 CrossPlatformInputManager 的资源可以做到这一点。您必须导入它并对其进行一些修改才能使用它。手表this https://www.youtube.com/watch?v=nGYObojmkO4了解如何导入它。

现在,您可以更换您的Input.GetAxis and Input.GetAxisRaw函数与CrossPlatformInputManager.GetAxis("Horizontal") and CrossPlatformInputManager.GetAxisRaw("Horizontal").

如果您让它工作,那么可以使用下面的方法使您的代码与移动设备和桌面设备兼容。

#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WEBGL
//put your Input.GetAxis` and `Input.GetAxisRaw` code here
#elif UNITY_ANDROID || UNITY_IOS 
//Put your `CrossPlatformInputManager.GetAxis("Horizontal")` and `CrossPlatformInputManager.GetAxisRaw("Horizontal")`. here
#endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2D 基本运动 UNITY 的相关文章

随机推荐

  • 编译时检查右移是否是有符号类型的算术运算

    我想知道在对有符号类型进行操作时检查右移是否是算术的最便携的方法是什么 例如是否 2 gt gt 1 is 1 在编译时 我的想法是在编译时以某种方式检查这一点并能够检测到这一点 这样我就可以编译该函数的不同版本 取决于运算符是否 gt g
  • 如何连接QLineEdit focusOutEvent

    我设计了一个带有QLineEdit在 PyQt4 中 在 Designer 的帮助下 我转换了 ui to py using pyuic4 我创建了另一个 py文件并导入和子类化Ui Class 我想执行一些任务QLineEdit失去焦点
  • 使用 IValueConverter 进行动态样式绑定

    我正在尝试设置一种样式 该样式在App xaml 在加载用户控件时动态地加载 并且只是由于某种原因不应用样式 即没有发生错误 只是不应用样式 我确信这是因为我定义了错误的绑定 但我无法弄清楚我需要做什么不同才能让它工作 App xaml 样
  • IText 编辑或删除 PDF 上的图层

    H All 我正在使用 IText 在 PDF 上添加文本图层 现在我想编辑PDF上的现有图层 图层也是仅由IText创建的 看来 IText 没有这样的方法支持 我想到的另一种方法是删除现有图层并在其位置上放置新图层 看来 IText 也
  • bash 迄今为止的字符串

    bash 中是否有机会将字符串转换为日期 例如 我有一个时间格式 Y m dS H M S 此类字符串的一个示例是 2009 06 24S12 34 56 我需要在 bash 中将此字符串转换为日期 unix 时间戳 我怎样才能做到这一点
  • html中的自动完成css类在vs代码中不起作用

    html 中 css 类名称的自动补全功能停止工作 我尝试了很多扩展 但没有任何效果 HTML 中 CSS 类名称的 IntelliSense HTML CSS 支持 另外 基尔是我的settings json workbench colo
  • Angular 2 Form 异步验证 ajax 在每次按键时调用

    我正在玩 Angular 2 表单异步验证 一切都工作正常 但后来我意识到在输入字段内的每个按键上都会对服务器进行 ajax 调用 这对服务器不利 我尝试了很多方法但没有任何效果 所以请帮助我如何处理这个问题 form FormGroup
  • 循环类似命名的 UI 元素 - 也许通过从其名称获取变量?

    我使用 Interface Builder 向视图添加了许多标签 我还有一个要显示的值数组 有没有比使用此代码更好的方法来设置标签 lblTotal1 text NSString stringWithFormat i Seconds int
  • MongoDB - 去除字段中的非数字字符

    我有一个电话号码字段 其中使用了各种随机分隔符 例如 932 555 1515 951 555 1255 952 555 1414 我想遍历已经存在的每个字段并删除非数字字符 那可能吗 无论它是存储为整数还是数字字符串 我都不在乎 它将仅用
  • 从用户输入中读取数学表达式

    我需要能够读取用户输入并将其分解以供以后使用 用户可以输入整数或小数和运算 但我不知道如何读取它 用户输入的示例是4 8 3 12 or 3 2 3 or 12 16 4 or 2 3 64 96 现在我正在使用这样的东西 public c
  • 在 Android AudioTrack 中使用缓冲区

    我试图弄清楚如何使用缓冲区音轨 http developer android com reference android media AudioTrack html有效地传输音乐 我知道您可以使用以下命令对音频进行排队write http
  • Mercurial - 比较本地和远程存储库?

    在Git中 有这样的命令 git remote show
  • 从数据集中完全删除一行

    我的网格视图上有一个删除按钮 单击删除按钮时 该行应该是 完全从会话中删除 我目前正在做以下事情 protected void gvMainLog RowCommand Object sender GridViewCommandEventA
  • MESI协议中的L3$角色是什么

    我想了解intel Broadwell中MESI的更多细节 假设一个cpu插槽有6个核心 core 0 到 core 5 他们每个人都有自己的 L1 和 L2 并共享 L3 共享内存中有一个var X x位于cache line 称为 XC
  • C `clock()` 函数只返回一个零

    The C clock 函数只返回一个零 我尝试使用不同的类型 但没有任何改进 这是一种高精度测量时间的好方法吗 include
  • 正则表达式:匹配第一个下划线之前的所有内容以及之后的所有内容

    我有这样的表情 test abc HelloWorld there could be more here 我想要一个采用第一个单词的正则表达式before第一个下划线 所以得到 test I tried A Za z 1 但这没有用 然后我
  • 如何全局安装ESlint?

    我正在尝试安装 ESlint 以将其与 Sublime Text 2 一起用于我的所有本地项目 配置文档 https eslint org docs user guide getting started global installatio
  • 重写泛型类的方法时发生名称冲突

    我试图理解使用以下代码得到的名称冲突错误 import java util import javax swing class Foo
  • 删除截断行末尾的字形

    当在启用了截断行的终端中使用 Emacs 23 时 Emacs 会在每行末尾添加一个美元符号 指示文本继续超出屏幕边缘 这让我很困扰 我想禁用此功能或以某种方式隐藏美元符号 这可能吗 如果是的话会怎样做 尝试用这个 set display
  • 2D 基本运动 UNITY

    目前我的角色在键盘上完美运行 但是当我通过 3 个 UI 按钮将你的动作转换为触摸时 我也尝试过 UI 图像 但成功了 我没有成功 它基本上是向右 向左 跳跃 应该如何做才能使其遵循以下说明 当用户按下方向键时 角色不会停止行走 直到用户释