检测两个按钮是不是被按住

Posted

技术标签:

【中文标题】检测两个按钮是不是被按住【英文标题】:Detect If Two Buttons Are Held Down检测两个按钮是否被按住 【发布时间】:2022-01-01 02:16:30 【问题描述】:

我正在为安卓开发一款无尽的跑步游戏,并使用 UI 按钮来左右移动玩家。当我同时按下左右 UI 按钮时,我想让玩家跳跃。这是我的玩家移动脚本:

using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;

public class PlayerMovement : MonoBehaviour

   
    public float speed = 15;
    public float diSpeed = 20; 
         
    public Rigidbody rb;
    CharacterController characterController;

    Vector3 moveVector = Vector3.zero;

    float horizontalInput;

    void Start()
    
        characterController = GetComponent<CharacterController>();
    

    void FixedUpdate()
    
        Vector3 forwardMove = transform.forward * speed * Time.fixedDeltaTime;
        Vector3 horizontalMove = transform.right * moveVector.x * diSpeed * Time.fixedDeltaTime;
        rb.MovePosition(rb.position + forwardMove + horizontalMove);
    

    void Update()
    
       
        moveVector.x = CrossPlatformInputManager.GetAxis("Horizontal");
       
    

代表 UI 按钮的游戏视图:

【问题讨论】:

【参考方案1】:

试试

private float cooldownL;
private float cooldownR;
private bool isLeftPressed;
private bool isRightPressed

void Update()
    cooldownR -= Time.deltaTime;
    cooldownL -= Time.deltaTime;
    if(cooldownR < 0)cooldownR = 0;
    if(cooldownL < 0)cooldownL = 0;

    if(isLeftPressed = true)
        movement = -1;
            
    if(isRightPressed = true)
        movement = 1;
    
    if(cooldownL != 0 && cooldownR)
        // jump
    

public void LeftPress()
    isLeftPressed = true;
    cooldownL = 0.8f;

public void RightPress()
    isRightPressed = true;
    cooldownR = 0.8f;

以下是如何为您的按钮分配脚本: 然后选择分配了您的脚本的对象,并在“无功能”下选择您的脚本名称,然后根据哪个按钮转到“leftPress()”或右。

【讨论】:

将 LeftPress 方法分配给左侧 UI 按钮,将 RightPress 方法分配给右侧 UI 按钮取决于什么样的游戏,运动变量只是一个占位符,你可以放下你的运动。 如何将 leftpress 方法分配给 UIbutton?? 这很简单:您转到层次结构,然后选择您的按钮,在 Inspector 中您会看到“按钮”组件,向下滚动一点,您就会找到“OnClick”事件。创建一个新事件并拖动分配了脚本的对象。然后选择脚本,然后选择函数“leftPress()” 看看更新后的答案,里面有图片

以上是关于检测两个按钮是不是被按住的主要内容,如果未能解决你的问题,请参考以下文章

检测 iPhone 音量按钮保持? (iOS 8)

Unity3D:如何检测按钮何时被按住和释放[重复]

当操纵杆按住sneakyinput不读按钮

在 Swift 中按住按钮移动对象

winform怎么实现Ctrl键和回车键绑定一个按钮。意思就是同时按住两个键,相当于点击butto

Android检测您何时按住按钮