我有一个统一游戏,其中包含一个旋转游戏对象,可以在点击时提高速度。
我的问题是游戏无法正常运行。现在,如果我点击屏幕的任何部分,它会增加游戏对象的旋转速度。另一方面,如果我将手指放在屏幕上,游戏对象开始减速,然后开始向相反方向旋转。
当我点击它时,我希望对象的旋转增加,而不是仅仅点击屏幕的任何部分。此外,我不知道为什么按住可以反转旋转方向。
var speed = 1;
var click = 0;
Screen.orientation = ScreenOrientation.LandscapeLeft;
function Update (){
{
transform.Rotate(0,0,speed);
}
if(Input.GetMouseButton(0))
{
if(speed != 0)
{
speed = 0;
} else {
click++;
speed = click;
}
答案 0 :(得分:0)
您必须使用输入。 GetMouseButtonUp 或 Input.GetMouseButtonDown ,而不是 Input.GetMouseButton ,此方法用于钳制。
尝试使用此代码:
var speed = 1;
var click = 0;
Screen.orientation = ScreenOrientation.LandscapeLeft;
function Update (){
{
transform.Rotate(0,0,speed);
}
if(Input.GetMouseButtonDown(0))
{
if(speed != 0)
{
speed = 0;
} else {
click++;
speed = click;
}
答案 1 :(得分:0)
这里有几个问题:
首先:
要仅在单击对象时提高速度,请使用来自摄像头的光线投射,并检查它是否会撞击您的对象。您的对象需要一个对撞机组件才能使其正常工作。
RaycastHit hit;
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
Transform objectHit = hit.transform;
objectHit.Rotate(0,0,speed);
}
请参阅https://docs.unity3d.com/Manual/CameraRays.html - >光线投射部分,了解更多信息。
其次:
Input.GetMouseButtonDown(..) // returns true at the instance your mouse button transits from up to down
Input.GetMouseButton(..) // returns true as long as your mouse button is held down
如果您想在点击它时做某事,请在Input.GetMouseButtonDown(..)
方法中使用Update()
。