【Unity】第一人称视角开发

这篇具有很好参考价值的文章主要介绍了【Unity】第一人称视角开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求

我的需求是在Unity构建一个第一人称视角,实现移动跳跃功能。
主要参考的是这篇博文提供的方案,不过该方案为了只允许一次跳跃,单独在人物底部构建了一个空对象,我无需此限制,因此对其进行了简化。

实现

1.创建场景

创建场景对象如下:

  • Ground 地形对象
  • Player 胶囊体视作人物
  • Cube 参照对象
    【Unity】第一人称视角开发
    将Main Camera移至于人物眼睛位置
    【Unity】第一人称视角开发

2.添加组件

给人物对象添加Character Controller
【Unity】第一人称视角开发

3.绑定脚本

创建CameraController,绑定到Main Camera

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraController : MonoBehaviour
{
    //获得player的transform
    public Transform player;
    //获取鼠标移动的值
    private float mouseX, mouseY;
    //添加鼠标灵敏度
    public float mouseSensitivity;
    //声明变量来累加mouseY
    public float xRotation;

    void Update()
    {
        //获得鼠标左右移动的值
        mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        //获得鼠标上下移动的值
        mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
       

        xRotation -= mouseY;
        //用数学函数Mathf.Clamp()将xRotation的值限制在一个范围内
        xRotation = Mathf.Clamp(xRotation, -70, 70);

        //使用transform中的Rotate()方法使player旋转
        player.Rotate(Vector3.up * mouseX);
        //使用transform.localRotation()方法使相机上下旋转
        transform.localRotation = Quaternion.Euler(xRotation, 0, 0);
    }

}

创建PlayerControaller,绑定到Player

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControaller : MonoBehaviour
{

    //获得Player的CharacterController组件
    private CharacterController cc;
    [Header("移动参数")]
    //定义player的移动速度
    public float moveSpeed;
    [Header("跳跃参数")]
    //定义player的跳跃速度
    public float jumpSpeed;
    //定义获得按键值的两个变量
    private float horizontalMove, verticalMove;
    //定义三位变量控制方向
    private Vector3 dir;
    //定义重力变量
    public float gravity;
    //定义y轴的加速度
    private Vector3 velocity;
    void Start()
    {
        //用GetComponent<>()方法获得CharacterController
        cc = GetComponent<CharacterController>();
        //初始化参数
        moveSpeed = 5;
        jumpSpeed = 5;
        gravity = 10;
    }


    void Update()
    {
        //用Input.GetAxis()方法获取按键左右移动的值
        horizontalMove = Input.GetAxis("Horizontal") * moveSpeed;
        //用Input.GetAxis()方法获取按键前后移动的值
        verticalMove = Input.GetAxis("Vertical") * moveSpeed;

        //将方向信息存储在dir中
        dir = transform.forward * verticalMove + transform.right * horizontalMove;
        //用CharacterController中的Move()方法移动Player
        cc.Move(dir * Time.deltaTime);

        //当键盘按空格的时候可以完成角色的跳跃
        if (Input.GetButtonDown("Jump"))
        {
            velocity.y = jumpSpeed;
        }

        //通过每秒减去重力的值不断下降
        velocity.y -= gravity * Time.deltaTime;
        //用CharacterController中的Move()方法移动y轴
        cc.Move(velocity * Time.deltaTime);
    }
}

4.运行测试

完成之后,就可以运行测试。
注意方向视角是通过获取鼠标偏移量进行设置,在点击运行之后,如果在编译过程中,鼠标进行移动,会造成视角和初始视角不一致的情况。

【Unity】第一人称视角开发

5.拓展:固定鼠标位置

如果需要固定鼠标位置,可以参考如下方案(仅适用windows端)

添加公有字段

[HideInInspector]
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int SetCursorPos(int x, int y);

固定鼠标在屏幕中心:文章来源地址https://www.toymoban.com/news/detail-420286.html

SetCursorPos((int)Screen.width / 2, (int)Screen.height / 2);

到了这里,关于【Unity】第一人称视角开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity使用NaveMesh实现第一人称视角移动

    Navemesh寻路系列文章 文章目录 目录 系列文章目录 文章目录 前言 一、NavMeshPath是什么? 二、使用步骤 1.引入库 2.读入数据 总结 navemesh已经大量使用到游戏中,但大部分寻路都是使用SetDestination函数,给予一个目标点移动,第一人称直接操控移动的文章很少。 为了解决这个问

    2024年02月03日
    浏览(39)
  • Unity例子——第一人称视角的角色控制器

    本文是为了前文Unity四元组的举例示范,为了让读者更好地理解。 效果是实现一个可以由鼠标进行方向操作,键盘进行移动操作的任务。 此为效果视频: 1687597097844 下面进行教学: 新建一个场景,放置一个plane作为地板,尺寸自定 创建一个新的material挂在plane上 再地板上放置

    2024年02月10日
    浏览(50)
  • Unity3D中实现人物的第一人称视角

    打开unity创建一个场景地图可以添加一个Plane作为地面 在Hierarchy视图中右键创建一个胶囊体(Capsule)作为Player,添加好后重置胶囊体的位置,并且调整胶囊体在一个合适的位置。 将Main Camera拖拽到到player内作为子对象,重置一下Main Camera的transform,并且再调整一下它在player中

    2024年02月11日
    浏览(73)
  • Unity3D中实现Player的第一人称视角

    效果,上面为Scene场景,下面为Game场景 0创建地形,当然可以先简单的创建一个空白的Terrain。这里我已经对地形进行了初步的编辑和渲染。 1.在Hierarchy视图中右键创建一个胶囊体(Capsule)作为Player,添加好后重置胶囊体的位置,并且调整胶囊体在一个合适的位置。  2.将Main

    2023年04月08日
    浏览(51)
  • 【0到1学习Unity脚本编程】第一人称视角的角色控制器

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :【0到1】Unity脚本游戏开发宝典 将摄像机变为胶囊体的子物体,按住 ctrl +shift +F 调整视野。让他变成胶囊体的眼睛 判断要前进时按照哪个

    2024年02月05日
    浏览(42)
  • Unity3D实现第一人称移动,随鼠标转动视角+上楼梯(C#)

    第一人称移动: 1、在层级面板创建一个Capsule,命名为Player,将层级面板中的相机拖到Player下方 2、重置Player和摄像机的Transform数值(方便调整摄像机在Player上的位置),然后调整摄像机在Player上的位置 大概将摄像机放到Player眼睛的位置即可。 3、创建一个脚本,命名为Came

    2024年02月13日
    浏览(59)
  • (15)第一人称视角视频

    文章目录           前言 15.1 推荐的零件 15.2 连接图示 15.3 通过任务计划器最小化OSD设置 15.4 集成式OSD 15.5 用户视频/博客 15.6 与FPV飞行特别相关的安全警告 15.7 政府/地方法规 第一人称视角 在飞行时为你提供了真正的飞行员视角,它将视频摄像机和发射器放在你的飞行器

    2024年02月11日
    浏览(33)
  • 【unity】Pico VR 开发笔记(视角移动)

    视角移动是简单的基础功能,这里区别于头显定位获得的小范围位移,是长距离不影响安全边界的位移方式。的 常见的位移方式有两种 ,其一是触发后 瞬间传送 到指定位置,其次是 摇杆控制视角实时移动 。XR Interaction Toolkit提供了两种位移方式的脚本,正确配置就可以实现

    2024年02月14日
    浏览(45)
  • 摄像机视角的切换_unity基础开发教程

    我们在游戏中经常可以看到游戏视角的切换,今天我们就做一个视角切换的小demo,学会之后可以将其融入到自己的游戏制作当中。 话不多说,我们现在开始! 首先要有一个场景,先创建四个正方体,组成图中的样子。 这里教大家一个小工具: 当选中物体要进行移动的时候

    2024年04月29日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包