C# 具有特定功能的Unity鼠标输入脚本只工作一次 使用System.Collections.Generic; 使用UnityEngine; 公共类HoldToMove:单一行为 { public bool holdEntered=false; private bool heldHeld=假; 公共电梯; 无效更新() { 如果(heldHeld==true) { if(Input.GetAxis(“鼠标Y”)>0) { holdLiverter.transform.Translate(Vector3.forward*10*Time.deltaTime); } if(Input.GetAxis(“鼠标Y”)0) { holdLiverter.transform.Translate(Vector3.right*10*Time.deltaTime); } if(Input.GetAxis(“鼠标X”)

C# 具有特定功能的Unity鼠标输入脚本只工作一次 使用System.Collections.Generic; 使用UnityEngine; 公共类HoldToMove:单一行为 { public bool holdEntered=false; private bool heldHeld=假; 公共电梯; 无效更新() { 如果(heldHeld==true) { if(Input.GetAxis(“鼠标Y”)>0) { holdLiverter.transform.Translate(Vector3.forward*10*Time.deltaTime); } if(Input.GetAxis(“鼠标Y”)0) { holdLiverter.transform.Translate(Vector3.right*10*Time.deltaTime); } if(Input.GetAxis(“鼠标X”),c#,unity3d,C#,Unity3d,因此,我试图做的是,当我在查看对象后按下鼠标按钮时,该脚本附加到对象“hold升降机”应该随鼠标移动(它会移动),当我释放它时,它会停止(如我所愿),但问题是这只工作一次,我如何修复此问题?void onMouseCenter() { holdEntered=true; if(输入。GetMouseButton(0)) { 赫尔德=真; } } 这就是问题所在。当鼠标进入某物时,它被称为。当鼠标在那东西上方时,你想这样做。也许在MouseOver上的OnMouseOver会起作用?ok,所以如

因此,我试图做的是,当我在查看对象后按下鼠标按钮时,该脚本附加到对象“hold升降机”应该随鼠标移动(它会移动),当我释放它时,它会停止(如我所愿),但问题是这只工作一次,我如何修复此问题?

void onMouseCenter()
{
holdEntered=true;
if(输入。GetMouseButton(0))
{
赫尔德=真;
}
}

这就是问题所在。当鼠标进入某物时,它被称为。当鼠标在那东西上方时,你想这样做。也许在MouseOver上的
OnMouseOver
会起作用?

ok,所以如果鼠标左键关闭,heldheld每次更新都会被设置为false。不是第一次了。。。。与世界上其他任何事物都无关。只有当您输入时鼠标按钮按下时,heldheld才会设置为true。。。如果不是。。那它就根本不起作用了,我也是这么想的,但是我应该把它放在哪里,这样它就能起作用不止一次呢。。这有什么意义?不是为你写,而是写在纸上——不是在你的头脑里,写下你作为一个人类应该如何认识自己以及你想要什么的指示。。然后喝一杯啤酒,回来,试着把它转换成CodeHoldEnter,这样我就可以有几个不同的变量名,例如,我只能在看这个时移动“HoldLivert”(如果我不看它,直到我停止拿LMB),而不是在看其他任何地方。
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;
    }
}