是点按一次不长按,角度会归0
时间: 2024-09-26 21:14:57 浏览: 14
在您提供的代码片段中,当用户快速点按一次鼠标右键(即不是持续按住),确实可能导致角度归零。因为在`if (Input.GetMouseButtonUp(1))`这部分,如果没有其他条件来防止,在鼠标单击后释放时,`transform.eulerAngles`会被直接设置回`currentRotation`,这相当于恢复到了原始的位置。为解决这个问题,可以在`GetMouseButtonUp`时加入一个检查,仅当用户实际进行了长按时才清零旋转:
```csharp
if (Input.GetMouseButtonDown(1)) {
//... 之前的部分
}
if (Input.GetMouseButton(1) && !Input.GetMouseButtonDown(1 + 1)) { // 检查是否连续两次按下(左键通常作为辅助操作)
// 长按期间才更新旋转
//... 现在的旋转处理
}
if (Input.GetMouseButtonUp(1)) {
if (Input.GetMouseButtonDown(1 + 1)) { // 用户释放右键但左键仍然按下,说明是快速点击而非长按
transform.eulerAngles = currentRotation; // 如果是快速点击,保持原始角度
} else { // 否则,正常处理鼠标释放
// ... 其他释放时的操作
}
}
```
这样,只有在用户真正长按时,角度才会归零,否则会保持上次的操作结果。
阅读全文