Unity 第一人称视角控制移动、旋转

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

第一人称视角操作

此功能主要是借鉴YouTube上一个博主的教程,写的蛮好我就搬运过来让大家也试试。

unity如何实现流畅转动视角,unity,游戏引擎

1、控制对象与镜头是子父级关系

unity如何实现流畅转动视角,unity,游戏引擎

2、控制器对象添加CharacterController,Rigidbody组件如下:

unity如何实现流畅转动视角,unity,游戏引擎

3、重头戏:创建PlayerController脚本并比此脚本挂到控制器上

unity如何实现流畅转动视角,unity,游戏引擎

其原理是:左右旋转是控制父物体的欧拉角的Y轴

 transform.Rotate(0, Input.GetAxis("Mouse X") * sensetivity,0);

上下点头是子物体相机的欧拉角Z轴

 playerCamera.Rotate(-Input.GetAxis("Mouse Y") * sensetivity, 0, 0);

水平方向

   moveDirection = new Vector3(Input.GetAxis("Horizontal")*moveSpeed, moveDirection.y, Input.GetAxis("Vertical")*moveSpeed);
   moveDirection = transform.TransformDirection(moveDirection);

跳跃:

 if (controller.isGrounded)
 {
     if (Input.GetButton("Jump"))
         moveDirection.y = jumpForce;
     else
         moveDirection.y = 0;
 }

移动文章来源地址https://www.toymoban.com/news/detail-859308.html

        moveDirection.y -= gravity * Time.deltaTime;
        controller.Move(moveDirection*Time.deltaTime);

4、源代码奉上:

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    [SerializeField] private float moveSpeed = 6f;
    [SerializeField] private float jumpForce = 10;
    [SerializeField] private float gravity = 15f;

    private Vector3 moveDirection;

    [Header("Camera details")]
    public float sensetivity = 1f;
    private Transform playerCamera;
    private CharacterController controller;

    void Start()
    {
        controller = GetComponent<CharacterController>();
        playerCamera = GetComponentInChildren<Camera>().transform;

        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }

    void Update()
    {
        transform.Rotate(0, Input.GetAxis("Mouse X") * sensetivity,0);
        playerCamera.Rotate(-Input.GetAxis("Mouse Y") * sensetivity, 0, 0);
        if (playerCamera.localRotation.eulerAngles.y != 0) 
            playerCamera.Rotate(Input.GetAxis("Mouse Y")*sensetivity,0,0);
        

        moveDirection = new Vector3(Input.GetAxis("Horizontal")*moveSpeed, moveDirection.y, Input.GetAxis("Vertical")*moveSpeed);
        moveDirection = transform.TransformDirection(moveDirection);

        if (controller.isGrounded)
        {
            if (Input.GetButton("Jump"))
                moveDirection.y = jumpForce;
            else
                moveDirection.y = 0;
        }

        moveDirection.y -= gravity * Time.deltaTime;
        controller.Move(moveDirection*Time.deltaTime);
    }
}

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

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

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

相关文章

  • Unity解决:3D开发模式第三人称视角 WASD控制角色移动旋转 使用InputSystem

    Unity版本:2019.2.3f1 目录  安装InputSystem 1:创建InputHander.cs脚本 挂载到Player物体上 获取键盘输入WADS 2.创建PlayerLocomotion.cs挂载到Player物体上,控制物体移动转向   菜单栏/Window/Package Manager/Input System  工程面板内 右键--创建Input Actions  选中New Controls改名为PlayerControls 然后属

    2024年02月06日
    浏览(51)
  • Unity 第一人称视角 角色控制脚本

    使用方法 WSAD 控制四个方向的移动 鼠标 控制角色的水平、竖直朝向 空格 控制角色跳跃 配置 需要指定玩家的第一人称摄像头    效果 代码 解析 Move函数 控制角色前后左右移动,改变的是位置,并不会改变角色朝向 View函数 控制角色左右旋转,朝上或朝下看 注意:在水平方

    2023年04月19日
    浏览(32)
  • Unity例子——第一人称视角的角色控制器

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

    2024年02月10日
    浏览(47)
  • 【0到1学习Unity脚本编程】第一人称视角的角色控制器

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

    2024年02月05日
    浏览(39)
  • Unity 3D 实现第一人称视角

    第一人称视角的运用十分广泛,常见于我的世界、APEX、守望先锋以及许多FPS(First-Person Shooting第一人称射击)等游戏。 那么,这类第一人称视角是如何实现的呢? 其实并不复杂, 一个人物模型 , 一个摄像机 , 一个脚本 ,便可轻松实现。 在 Hierarchy 栏目右击随机创建一个

    2024年02月11日
    浏览(37)
  • 【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)

    一、前言 嗨,大家好,我是新发。 有同学私信我,问我能不能写一篇Unity手游第一人称视角控制的教程, 那么,今天就来做个 Demo 吧~ 注: Demo 工程源码见文章末尾 最终效果如下: 二、实现方案 1、无主之地,第一人称视角 第一人称视角的游戏大家应该不陌生,比如《无主

    2023年04月08日
    浏览(48)
  • unity通过脚本实现漫游功能 wasd控制玩家移动,空格跳跃,鼠标控制视野旋转,滑轮控制镜头伸缩

    将场景中的摄像机删除,在玩家的控制面板中添加Camera组件,和rigibody组件   using System.Collections; using System.Collections.Generic; using UnityEngine; public class move : MonoBehaviour {     public float speed;     Rigidbody rigid;     void Start()     {                 rigid = GetComponentRigidbody();     }  

    2024年02月10日
    浏览(43)
  • Unity实现第一人称移动(胎教级教学)

    第一步 需要一个场景和一个player作为操作角色,并且 在player子目录创建一个camera 作为视角 这里演示我就随便 创建一个plane 作为 地面 和 一个sphere 作为 player 然后调整好player的位置不要与地面镶嵌就像这样 然后需要给地面(你们自己的场景)和player添加一个Collider组件 在属性

    2024年04月13日
    浏览(32)
  • 【Unity】第一人称实现键盘移动WASD

    背景:开发影院场景 环境:Unity2021.3 功能:WASD键实现移动、鼠标左右平滑实现转向 代码:挂载在相机的父物体上(好像是因为相机本身不支持移动?如有误望指正)

    2024年02月12日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包