首页 > 解决方案 > 具有特定功能的 Unity 鼠标输入脚本只能工作一次

问题描述

using System.Collections.Generic;
using UnityEngine;

public class HoldToMove : MonoBehaviour
{
    public bool holdEntered = false;
    private bool heldHeld = false;
    public Transform holdElevator;

    void Update()
    {
        if (heldHeld == true)
        {
            if (Input.GetAxis("Mouse Y") > 0)
            {
                holdElevator.transform.Translate(Vector3.forward * 10 * Time.deltaTime);
            }
            if (Input.GetAxis("Mouse Y") < 0)
            {
                holdElevator.transform.Translate(Vector3.back * 10 * Time.deltaTime);
            }
            if (Input.GetAxis("Mouse X") > 0)
            {
                holdElevator.transform.Translate(Vector3.right * 10 * Time.deltaTime);
            }
            if (Input.GetAxis("Mouse X") < 0)
            {
                holdElevator.transform.Translate(Vector3.left * 10 * Time.deltaTime);
            }
        }
        if (!Input.GetMouseButton(0))
        {
            heldHeld = false;
        }
    }

    void OnMouseEnter()
    {
        holdEntered = true;
        if (Input.GetMouseButton(0))
        {
            heldHeld = true;
        }
    }

    void OnMouseExit()
    {
        holdEntered = false;
    }
}

所以我想要做的是,当我在查看对象后按住鼠标按钮时,这个脚本附加到对象“holdElevator”应该随鼠标移动(它确实如此),当我释放它时,它会停止(就像我想要的那样)但问题是这只能工作一次,我该如何解决这个问题?

标签: c#unity3d

解决方案


void OnMouseEnter()
{
    holdEntered = true;
    if (Input.GetMouseButton(0))
    {
        heldHeld = true;
    }
}

是问题。当鼠标进入某物时调用它。当鼠标悬停在那个东西上时,你想这样做。也许OnMouseOver会起作用?


推荐阅读