c# - 具有特定功能的 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”应该随鼠标移动(它确实如此),当我释放它时,它会停止(就像我想要的那样)但问题是这只能工作一次,我该如何解决这个问题?
解决方案
void OnMouseEnter()
{
holdEntered = true;
if (Input.GetMouseButton(0))
{
heldHeld = true;
}
}
是问题。当鼠标进入某物时调用它。当鼠标悬停在那个东西上时,你想这样做。也许OnMouseOver
会起作用?