Unity fps 旋转相机

2024-04-18

在我的游戏中,我有一个摄像头,我希望将 FPS 之类的旋转附加到该摄像头上。

因此,如果我将光标向左移动,我希望凸轮向左旋转。如果我向上移动光标,那么凸轮应该向上看,等等。

我目前已经部分工作。我可以左看、右看、上看、下看。当我向下看然后左右移动光标时会出现问题。然后它给我一个“滚动”效果。

请观看此视频以了解我的意思:http://www.screencast.com/t/Phedh8H0K13 http://www.screencast.com/t/Phedh8H0K13

显然,当我向下看时,我仍然希望有“偏航”效果而不是“滚动”效果。有人知道该怎么做吗?这是我到目前为止所拥有的:

// Update is called once per frame
public override void update ()
{
    this.camera.transform.rotation *= 
        Quaternion.AngleAxis( Time.deltaTime * sensitivityRoll * Input.GetAxis("Vertical"), Vector3.forward );

    this.camera.transform.rotation *= 
        Quaternion.AngleAxis( Time.deltaTime * sensitivityYaw * Input.GetAxis("Mouse X"), Vector3.up );

    this.camera.transform.rotation *= 
        Quaternion.AngleAxis( Time.deltaTime * sensitivityPitch * Input.GetAxis("Mouse Y"), Vector3.left );
}

我刚刚在这个主题中找到了答案:

http://forum.unity3d.com/threads/109250-Looking-with-the-Mouse?highlight=person+camera http://forum.unity3d.com/threads/109250-Looking-with-the-Mouse?highlight=person+camera


该主题的代码:

C# 单声道代码:

using UnityEngine;
using System.Collections;

/// MouseLook rotates the transform based on the mouse delta.
/// Minimum and Maximum values can be used to constrain the possible rotation

/// To make an FPS style character:
/// - Create a capsule.
/// - Add the MouseLook script to the capsule.
///   -> Set the mouse look to use LookX. (You want to only turn character but not tilt it)
/// - Add FPSInputController script to the capsule
///   -> A CharacterMotor and a CharacterController component will be automatically added.

/// - Create a camera. Make the camera a child of the capsule. Reset it's transform.
/// - Add a MouseLook script to the camera.
///   -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.)
[AddComponentMenu("Camera-Control/Mouse Look")]
public class MouseLook : MonoBehaviour {

    public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
    public RotationAxes axes = RotationAxes.MouseXAndY;
    public float sensitivityX = 15F;
    public float sensitivityY = 15F;

    public float minimumX = -360F;
    public float maximumX = 360F;

    public float minimumY = -60F;
    public float maximumY = 60F;

    float rotationY = 0F;

    void Update ()
    {
        if (axes == RotationAxes.MouseXAndY)
        {
            float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;

            rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
            rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);

            transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
        }
        else if (axes == RotationAxes.MouseX)
        {
            transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
        }
        else
        {
            rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
            rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);

            transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
        }
    }

    void Start ()
    {
    //if(!networkView.isMine)
        //enabled = false;

        // Make the rigid body not change rotation
        //if (rigidbody)
            //rigidbody.freezeRotation = true;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity fps 旋转相机 的相关文章

  • 如何调试参数化 SQL 查询

    我使用 C 连接到数据库 然后使用 Ad hoc SQL 来获取数据 这个简单的 SQL 查询非常方便调试 因为我可以记录 SQL 查询字符串 如果我使用参数化 SQL 查询命令 有没有办法记录 sql 查询字符串以进行调试 我想就是这样的
  • .NET 可移植类库中的 .ToShortDateString 发生了什么

    我想知道为什么没有 ToShortDateString在 NET 可移植类库中 我有 2 个项目 Silverlight 和常规 NET 类库 使用相同的代码 并且代码涉及调用 ToShortDateString on a DateTime
  • 浮点提升:stroustrup vs 编译器 - 谁是对的?

    在 Stroustrup 的新书 C 编程语言 第四版 第 10 5 1 节中 他说 在执行算术运算之前 整数提升用于从较短的整数类型创建整数 类似地 浮点提升是用于从浮点数创建双精度数 我用以下代码确认了第一个声明 include
  • 阅读 Stack Overflow RSS 源

    我正在尝试获取未回答问题的列表the feed https stackoverflow com feeds 但我在阅读时遇到困难 const string RECENT QUESTIONS https stackoverflow com f
  • 组合 Datepicker 和 Timepicker 值 Win 8.1

    我试图同时使用 Datepicker Timepicker 来返回可以存储在数据库中的 DateTime 例如 我想要安排会议的开始日期和结束日期 如果适用 我将如何将这些值组合成 SQL 数据库可以处理的正确格式 任何反馈都会很棒 我让这
  • 如何避免选择项目时 winforms 树视图图标发生变化

    我正在一个小型 C Winforms 应用程序中尝试树视图 我已经以编程方式将 ImageList 分配给树视图 并且所有节点都很好地显示了它们的图标 but当我单击一个节点时 它的图标会发生变化 变为 ImageList 中的第一个图像
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • 推送 Lua 表

    我已经创建了一个Lua表C 但我不知道如何将该表推入堆栈顶部 以便我可以将其传递给 Lua 函数 有谁知道如何做到这一点 这是我当前的代码 lua createtable state libraries size 0 int table i
  • 如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

    我正在尝试使用 clang tidy 来强制执行 C 核心指南 虽然它确实有很多有效点 但有一件事我无法真正解决 dlsym 返回一个void 我需要以某种方式将其转换为正确的函数指针 为此 我使用reinterpret cast 由于指南
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • 如何在 C++ 中使用 PI 常数

    我想在一些 C 程序中使用 PI 常数和三角函数 我得到三角函数include
  • 编写专门用于类及其子类的函数模板

    我正在尝试编写一个函数模板 一个版本应该用于不满足另一版本标准的所有类型 当参数是给定类的基类或该类本身时 应使用另一个版本 我尝试过超载Base 但是当类派生自Base 他们使用通用的 而不是特定的 我也尝试过这种 SFINAE 方法 s
  • 如何从枚举中选择随机值?

    给定 C 中的任意枚举 如何选择随机值 我没有找到这个非常基本的问题 我会在一分钟内发布我的答案作为任何人的参考 但请随意发布你自己的答案 Array values Enum GetValues typeof Bar Random rand
  • 在 MVVM 中,可以在视图后面的代码中访问 ViewModel 吗?

    在 MVVM 模式中 是否可以接受甚至可以访问视图代码后面的 ViewModel 属性 我有一个可观察的集合 它填充在 ViewModel 中 我需要在视图中使用它来绑定到带有链接列表的无限滚动条 IE private LinkedList
  • C# - 为什么我需要初始化 [Out] 参数

    我有几个从本机 dll 导入的方法 使用以下语法 internal static class DllClass DllImport Example dll EntryPoint ExampleFunction public static e
  • 如何使用 g++ 在 c++ 20 中使用模块?

    我读了这个链接https gcc gnu org wiki cxx modules https gcc gnu org wiki cxx modules并尝试从该网站复制以下示例 我已经知道这个编译器部分支持模块系统 注 我用的是windo
  • 在 C# 中读取/写入命令行程序

    我正在尝试与 C 的命令行程序进行对话 它是一个情绪分析器 它的工作原理如下 CMD gt java jar analyser jar gt Starting analyser 这是我想从我的 C 程序插入内容的地方 例如 I love y
  • 最后从同一类中的其他构造函数调用构造函数

    我在这里读到可以调用另一个构造函数从同一类中的另一个构造函数调用构造函数 https stackoverflow com questions 829870 calling constructor from other constructor

随机推荐

  • 通过 .net 客户端通过 SSL 连接到 IBM MQ

    我正在尝试通过 NET 客户端连接到 MQ 服务器队列 我需要使用证书进行安全通信 这是我的代码 MQEnvironment SSLKeyRepository SYSTEM MQEnvironment ConnectionName conn
  • 在组上方展开 Android 的 ExpandableListView 子级

    ExpandableListView 实现的默认行为是在单击时展开组下方的子项 我想知道是否可以通过修改 ExpandableListView XML 属性或以某种方式以编程方式更改此行为 以便在组上方生成子级 单击时 我最终通过制作一个普
  • PyMol:选择我发现氢键的残基

    使用 PyMol 我可以使用 Action gt Find gt Polar Contacts 显示氢键 这会产生接触点 但我想通过仅显示具有这些接触点的残基而不显示其他内容来清楚地显示它们 目前 由于蛋白质的其余部分 视图非常不清楚 我想
  • Unordered_map 迭代器失效

    我有这个迭代器循环 typedef boost unordered map
  • UISearchbar 在 swift 4 中使用 UItextfield

    我正在研究 JSON 我的 Json 数据打印到表视图中 我想用搜索栏过滤该数据 所以我放置了 Textfield 以使用搜索栏 我使用这个网站的参考 http findnerd com list view How to create yo
  • 如何在 Bash shell 脚本中检查目录是否存在?

    什么命令检查 Bash shell 脚本中的目录是否存在 检查目录是否存在 if d DIRECTORY then echo DIRECTORY does exist fi 检查目录是否不存在 if d DIRECTORY then ech
  • 更改配置后通过WebView和JS函数调用JavascriptInterface方法通常不起作用

    我在 WebView 中调用 JavaScript 函数并在应用程序中获取响应 在我的 Galaxy Tab 2 10 上 时遇到一些问题 我在内容加载后直接调用 js 函数 根据这一个解决方案 https stackoverflow co
  • 无法让复杂的 mysql 查询工作

    我正在尝试编写一个 mysql 查询 但遇到了一些问题 我正在尝试从我的 Wordpress 数据库中查询 WooCommerce 数据 基本发票数据存储在 wp posts 表中 其余数据存储在 wp postmeta 表中 现在wp p
  • 在一行中设置多个变量

    在 perl 中 我可以在一行中定义一堆变量 my value 0 my a b c value 有没有类似的 C 方法可以做到这一点 这是我所拥有的 const bool free true bool t1 t2 t3 private v
  • 在使用 CTE 模拟的 UPSERT 中生成默认值

    在 PostgreSQL 中模拟 UPSERT 的可写 CTE 看起来相当优雅 直到我们在 Postgres 中获得实际的更新插入 合并 请参阅 https stackoverflow com a 8702291 558819 https
  • 使用Python子进程处理带括号的文件路径

    我要处理的文件的路径中包含括号 path dir file with parentheses txt 我正在尝试用 Python 处理它们 如下所示 subprocess call process s path shell True 但是
  • MongoDB Ruby 驱动程序 - “同步”:无法从陷阱上下文调用

    我试图使用 Kernel trap 捕获信号 并在该上下文中运行数据库请求 但出现上述错误 以前有人遇到过吗 有什么办法解决吗 示例代码 trap HUP do db db name update id 123 set gt a 1 end
  • 如何从 Autodesk Forge API 按项目获取评论和传输?

    我试图找到一种获取评论和传输的方法 但在 BIM360 API 或数据管理 API 中没有找到它 可以获得吗 目前尚未公开 BIM 360 的审核和传输 API 有一个Review API的愿望 ALEX 37150 API 希望 公开文档
  • 如何创建 Typescript 类的泛型类型的新实例?

    如何在 Typescript 中按预期完成以下工作 export class ProxyObject
  • 在 Arduino 上将整数/小数转换为十六进制?

    如何将整数或小数变量转换为十六进制字符串 我可以做相反的事情 将十六进制转换为整数 但我无法找出其他方法 这是为了Serial print 数组中的十六进制值 查看 Arduino 字符串教程here http arduino cc en
  • 删除图像上绘制的文本的顶部和底部填充

    我正在从指定的文本生成图像 但我面临一个问题 我无法删除生成的图像内绘制文本的顶部和底部填充 我尝试在使用时更改字符串格式Graphics DrawString 但我只设法删除了左右填充 private void button1 Click
  • Android - setRequestedOrientation - 活动和视图生命周期

    我在使用 JNI 的本机代码方面遇到了一些问题 我怀疑这可能是由于调用setRequestedOrientation 当我打电话时活动会发生什么setRequestedOrientation 是刚刚重新启动还是完全被破坏了 另外 视图会发生
  • 如何即时命名变量?

    是否可以动态创建新的变量名称 我想将列表中的数据帧读取到末尾带有数字的新变量中 比如 orca1 orca2 orca3 如果我尝试类似的事情 paste orca i sep list name i 我收到这个错误 target of a
  • NSLocale currentLocale 始终返回“en_US”而不是用户当前的语言

    我正在国际化 iPhone 应用程序 我需要根据用户当前的区域设置对某些视图进行编程更改 我快要疯了 因为无论 iPhone 模拟器或实际硬件上的语言偏好是什么 locale始终评估为 en US NSString locale NSLoc
  • Unity fps 旋转相机

    在我的游戏中 我有一个摄像头 我希望将 FPS 之类的旋转附加到该摄像头上 因此 如果我将光标向左移动 我希望凸轮向左旋转 如果我向上移动光标 那么凸轮应该向上看 等等 我目前已经部分工作 我可以左看 右看 上看 下看 当我向下看然后左右移