Unity实现角色控制器流畅控制人物

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

Hello,有缘人,这里是橘子广场,this is a Unity角色控制器的代码,实现人物的流场控制和视角的转换。我这里使用的是第一人称人物控制,当然第三人称重新设置下相机即可。
这是效果

首先搭建好场景,空物体加角色控制器,设置好碰撞体大小,将主摄像机放在角色头上。
在这里插入图片描述
然后自行设置Run即奔跑按键Edit->ProjectSetts->Inpute(我设置的是左侧shift键)
在这里插入图片描述

接下来就是具体代码:

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

public class PlayerController: MonoBehaviour
{
    private CharacterController characterController;
    [SerializeField]
    private float moveSpeed;//移动速度
    [SerializeField]
    private float runSpeed;//奔跑速度
    [SerializeField]
    private float jumpSpeed;//起跳速度
    [SerializeField]
    private float mouseSensitivity;//鼠标灵敏度

    private Vector3 moveVec;//控制移动的向量
    float verticalAngle = 0;//控制垂直方向视野转动角度
    float verticalSpeed = 0f;//跳跃和下落的速度改变

    private void Awake()
    {
        characterController = this.gameObject.GetComponent<CharacterController>();
    }
    // Start is called before the first frame update
    void Start()
    {
        DisplayCursor(false);//使光标不可见
    }   
    // Update is called once per frame
    void FixedUpdate()
    {
        //镜头移动
        //获取鼠标当前位置的X和Y
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;
        //鼠标在Y轴上的移动转为摄像机的上下运动,即是绕着X轴转动,
        mouseY = mouseY * mouseSensitivity;
        verticalAngle = Mathf.Clamp(mouseY + verticalAngle, -89f, 89f);//限定垂直视角
        Vector3 currentAngles = Camera.main.transform.localEulerAngles;
        currentAngles.x = verticalAngle;
        Camera.main.transform.localEulerAngles = currentAngles;
        //鼠标在X轴上的移动转为对象左右的转动 同时带动其子物体摄像机的左右转动
        transform.localRotation = transform.localRotation * Quaternion.Euler(0, mouseX * mouseSensitivity, 0);
        //人物跳跃
        if (characterController.isGrounded && Input.GetButtonDown("Jump"))
        {
            verticalSpeed = jumpSpeed;
        }
        //人物移动
        bool running = Input.GetButton("Run");//Run需要自己去设置ProjectSetts->Inpute
        float actualSpeed = running ? runSpeed : moveSpeed;       
        moveVec = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized;//GetAxisRaw省去了虚拟轴-1到1的过渡
        moveVec = this.transform.TransformDirection(moveVec);
        characterController.Move(moveVec * actualSpeed * Time.fixedDeltaTime);
        //人物垂直方向移动
        verticalSpeed -= 10.0f * Time.fixedDeltaTime;
        if (verticalSpeed < -10f)
            verticalSpeed = -10f; //最大下落速度
        var verticalMove = new Vector3(0, verticalSpeed * Time.fixedDeltaTime, 0);
        var flag = characterController.Move(verticalMove);
        if ((flag & CollisionFlags.Below) != 0)
            verticalSpeed = 0;
    }
    /// <summary>
    /// 光标可视化处理
    /// </summary>
    /// <param name="display"></param>
    public void DisplayCursor(bool display)
    {
        Cursor.lockState = display ? CursorLockMode.None : CursorLockMode.Locked;
        Cursor.visible = display;
    }
}

脚本的参数自行设置即可;接下来就可以愉快地移动了。(有问题和指教可以私信me哟)
在这里插入图片描述

详解Unity中的角色控制器 如何让玩家所操纵的角色动起来,这在Unity中很容易实现,但是如何确保玩家所操作的角色不会产生一些非常违反物理常识的情况?而这就需要进行大量的检测,已确保玩家所操纵的角色正常。所幸Unity为我们提供了这样的一个组件——角色控制器(Character Controller)。下面将介绍该组件的基本参数以及使用方法。...... 阅读详情

相关推荐

Unity角色控制器

PS:公司终于给我派任务了,最近几天都没学Unity🤧。

qq_48512649的博客 2475

Unity每日一记】角色控制器Character Contorller

角色控制器Character Contorller

秩沅 3842

unity角色控制器详解

角色控制器Unity中的一种特殊组件,它可以用于控制游戏中的角色角色控制器提供了一些有用的功能,例如移动、跳跃、重力和碰撞检测等,可以帮助您实现角色的基本控制。与其他类型的控制器不同,角色控制器使用胶囊体碰撞检测来检测角色与其他物体之间的碰撞。这种碰撞检测方法可以确保角色在运动时保持稳定,并且可以避免一些常见的碰撞问题,例如卡住或穿过物体。使用角色控制器可以使角色控制变得更加简单和直观。您可以使用角色控制器提供的函数来控制角色的移动、跳跃和旋转等,而不必手动编写复杂的代码。

qq_20179331的博客 1560

【制作100个unity实战之5】2D横版实现人物移动跳跃1——多段跳完美手感(包含动画切换,包含源码下载)

2d人物控制代码跳跃总是手感不好? 人物多段跳不知道如何实现

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1134

Unity角色控制器(CharacterController)

角色控制器的简单应用

m0_61777011的博客 1万+

Unity实现人物的WSAD的移动

Unity实现人物的WSAD移动是3D游戏开发中非常基础且重要的一环。本文将详细介绍如何使用Unity引擎实现这一功能,并涉及到人物移动、转向和面向移动方向等关键要素。 7.实现人物90°上下视角移动 添加人物90°上下视角移动逻辑: 判断是否按下WSAD键:

lxq004的博客 1993

个人技术总结——unity3D的人机交互、角色控制器、单例模式

人机交互是指游戏中玩家与游戏世界之间的互动,包括玩家输入、鼠标键盘控制等。角色控制器是游戏中人物移动、跳跃、奔跑等行为的控制器,通常是游戏人物的一个组件。单例模式是保证一个类只有一个实例,并提供一个全局访问点。Unity中人机交互、角色控制器、单例模式都是很重要的技术,可以帮助我们实现游戏设计中的关键功能。在使用这些技术时,需要注意一些常见问题以及解决方法,这对于增强开发效率和游戏性体验都非常重要。

I_amStar的博客 1288

Unity引擎开发:角色控制器开发_第一人称射击游戏角色控制

在上一节中,我们讨论了如何在Unity中设置基本的角色模型和动画控制器。本节将深入探讨如何实现第一人称射击游戏中的角色控制,包括移动、转向、跳跃、射击等基本功能。我们将通过编写C#脚本来实现这些功能,并确保角色控制流畅且响应迅速。

chenlz2007的博客 904

Unity动画☀️8. 添加角色控制器、Curves、添加滑动

添加角色控制器、Curves、添加滑动

星河造梦坊 2207

Unity 第一人称控制器(FirstPersonController)

Unity 第一人称控制器(FirstPersonController)角度控制(Clamping) 角度控制(Clamping)

weixin_44293055的博客 9223

Unity 角色控制器插件】Actor Controller - An Advanced Character Controller 支持多种角色运动模式,包括步行、跑步、跳跃、下蹲、游泳等

Actor Controller - An Advanced Character Controller 是一款 Unity 插件,旨在为开发者提供一个功能强大、易于使用的角色控制器。这个插件特别适用于需要高质量角色控制的游戏,如第三人称、第一人称、平台跳跃游戏以及包含复杂运动和物理交互的游戏。

2403_88403568的博客 1246

Unity角色动画详细学习记录

前言 接触unity的时间也不算短了,但常感自己对它很多方面的了解还不够深入。正好最近在独立做一个rpg游戏,便决定就开发过程中使用到的引擎模块进行更深入的学习和理解,以此博客作为学习纪录。如果有幸帮助到正在阅读此文的人,那就再好不过了。 这篇就来看看unity的动画系统,行文结构主要以《游戏引擎架构》这本书的动画系统部分为参照,探究在unity这个特定的引擎中是如何实现动画系统的。有引用的部分我尽量都标注出来。 一、游戏角色动画发展简史 根据《游戏引擎架构》(Jason Gregory著,叶劲峰译,电子工

jonwu726的博客 6613

使用按键控制角色运动在 Unity 中的实现教程

通过以上步骤和代码,就可以在 Unity实现使用按键控制角色运动并播放相应动画的功能。在实际操作中,可以根据需求进一步调整和优化。

m0_57836225的博客 1643

Unity-平台跳跃任务控制器

Unity-平台跳跃任务控制器 前言: Unity制作2D游戏中,跳跃机制是个问题,今天我们就来学习一下一个很好手感的平台跳跃人物控制器。 跟着的教程是b站的此教程 成品展示 关于陷阱机关这些图片请在Unity商店中随便找个2D冒险题材的素材,关于人物请下载这张图片: 好了,接下来我们来动手制作 优秀的移动 新建一个2D场景,然后可以去找一些2D素材,我这里在Unity Assert里找了Pixel Adventure,准备用它来搭建基本地面...

#的博客 1250

Unity3D学习笔记05:四元数控制人物旋转

在上一篇文章《Unity3D学习笔记04:角色控制器CharacterController控制人物移动旋转》我们学习了怎么使用角色控制器CharacterController来实现主角任务的移动和转身,那么在Unity3D中,人物的旋转是靠四元数Quaternion来实现的,我们今天就来把上一篇文章的项目代码改写一下,使其用四元数实现角色控制器一样的转身效果,项目工程需要新建的模型,模型组件设置

路上的点滴 4797

Unity实现虚拟人物唇同步的Oculus Lipsync实践指南

Oculus Lipsync是一个由Oculus Research开发的工具,用于生成准确的唇形动画,使虚拟角色能够与真实或计算机生成的语音同步。该工具可以显著提高虚拟角色的逼真度,给用户带来更加沉浸式的体验。Oculus Lipsync支持广泛的音频格式,并能解析多种语言的语音。它通过将音频中的音素识别为特定的口型状态,从而实现精确的唇形动画同步。此外,它还提供了一个可视化的界面,允许艺术家和开发者调整口型的动态,以达到最佳的同步效果。

weixin_28922227的博客 1853

Unity引擎开发:角色控制器开发_角色输入处理与响应

对于更复杂的输入需求,可以通过自定义输入管理器来实现。自定义输入管理器可以更灵活地处理不同的输入设备和输入组合,适用于需要高度定制的游戏。以下是一个示例,展示了如何创建一个自定义输入管理器来处理角色的移动和跳跃。// 角色移动速度 public float speed = 5.0f;// 跳跃力 public float jumpForce = 10.0f;// 角色刚体 private Rigidbody rb;

chenlz2007的博客 836

Unity】 脚本控制人物移动/跳跃/视角跟随鼠标/脚步声

文章目录一、目标二、代码三、收获四、总结 一、目标 控制人物移动,奔跑,跳跃 人物视角跟随鼠标 移动时有背景音乐 二、代码 using System; using System.Linq; using UnityEngine; namespace FPSControllerLPFP { // Manages a first person character // RequitrComponent的作用是,直接将对象的组件进行绑定,而不需要从incpector去进行设置,避免错误

weixin_43927892的博客 4551

Unity FPS游戏开发:从Input系统到角色控制器完整实现

游戏开发中,输入系统是连接玩家操作与游戏世界的核心桥梁。其原理在于实时捕获键盘、鼠标等外设信号,并将其转化为游戏逻辑可识别的数据。对于第一人称射击(FPS)这类对操作响应要求极高的游戏,一套稳健的输入处理方案直接决定了游戏的基础手感和可玩性。通过分离输入采集、逻辑计算与物理执行三层架构,开发者可以构建出清晰、可扩展的控制逻辑,有效管理角色移动、视角旋转与状态切换。本文以Unity引擎的经典Input Manager为切入点,详细拆解了如何利用Input.GetAxis、CharacterControlle

weixin_30326515的博客 363
上一篇: Unity消息中心,通知模式
下一篇: Unity给对象添加可见红外射线及射击功能
丶橘子皮
博客等级 码龄7年 4粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值