c# - 在 Unity 中通过鼠标拖动围绕游戏对象旋转相机

标签 c# unity-game-engine

我想通过拖动鼠标来围绕游戏对象(例如立方体)旋转相机,以模拟游戏对象正在旋转的感觉(就像我们在场景编辑器中旋转对象以及在购物网站中旋转对象一样)。

下面的脚本是我正在使用的脚本。但有时脚本的行为非常奇怪。相机以与预期方向相反的方向旋转。为什么会发生这种情况?我需要对代码进行哪些更改才能使其正常工作?请帮忙。

using UnityEngine;
using System.Collections;

public class ExampleBehaviourScript : MonoBehaviour
{
    public Camera cameraObj;
    public GameObject myGameObj;
    public float speed = 2f;

    void Update()
    {
        RotateCamera();
    }

    void RotateCamera()
    {
        if(Input.GetMouseButton(0))
        {
         cameraObj.transform.RotateAround(myGameObj.transform.position, 
                                         Vector3.up,
                                         -Input.GetAxis("Mouse X")*speed);

         cameraObj.transform.RotateAround(myGameObj.transform.position, 
                                         Vector3.right,
                                         -Input.GetAxis("Mouse Y")*speed);
        } 

    }
}

最佳答案

我认为这是由引用轴引起的。

因为您使用的是 Vector3.upVector3.right,而不是相机的,所以它没有按预期方向旋转。 所以,你应该像下面这样改变。

void RotateCamera()
{
    if(Input.GetMouseButton(0))
    {
     cameraObj.transform.RotateAround(myGameObj.transform.position, 
                                     cameraObj.transform.up,
                                     -Input.GetAxis("Mouse X")*speed);

     cameraObj.transform.RotateAround(myGameObj.transform.position, 
                                     cameraObj.transform.right,
                                     -Input.GetAxis("Mouse Y")*speed);
    } 

}

关于c# - 在 Unity 中通过鼠标拖动围绕游戏对象旋转相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54852001/

相关文章:

c# - .Net Framework 您必须添加对程序集 mscorlib 的引用,Version=4.0.0.0

c# - 为什么以及如何在Environment.Exit中使用Windows系统错误代码

ios - 构建服务器 Unity3d + iOS 到 ipa 文件

c# - 如何制作Unity/C#自定义事件函数

c# - 桌面应用程序的应用程序内购买

c# - 扩展 System.Windows.Forms.Button 并更改 c# 中的默认文本

c# - VSIX 窗口 - 执行 ICommand 的快捷键

c# - 使用 SQL 的 Unity 3D 安全身份验证

xcode - Xcode 11.2 (11B52) 中上传失败被拒绝 : ITMS-90534: Invalid Toolchain in MacOS Catalina 10. 15

c# - 仅在 Z 轴上旋转游戏对象 C#