Unity分享一个简单的3D角色漫游脚本

1.新建一个场景,并创建一脚本

2.给场景中的地面添加一个Ground标签

3.给刚刚新建的脚本编写代码

cs 复制代码
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed = 5f; // 移动速度
    public float jumpForce = 5f; // 跳跃力量
    public float mouseSensitivity = 100f; // 鼠标灵敏度

    public Transform playerBody;
    public Camera playerCamera;

    private Rigidbody rb;
    private bool isJumping = false;
    private float xRotation = 0f;

    private void Start()
    {
        rb = GetComponent<Rigidbody>();

        // 锁定鼠标
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }
    private void Update()
    {
        // 获取键盘输入
        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");

        // 计算移动方向
        Vector3 movementDirection = new Vector3(horizontalInput, 0f, verticalInput).normalized;

        // 根据输入移动角色
        transform.Translate(movementDirection * moveSpeed * Time.deltaTime);

        // 处理跳跃
        if (Input.GetButtonDown("Jump") && !isJumping)
        {
            rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
            isJumping = true;
        }

        // 处理视野旋转
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        playerCamera.transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        playerBody.Rotate(Vector3.up * mouseX);
    }

    private void OnCollisionEnter(Collision collision)
    {
        // 当角色碰撞到地面时
        if (collision.gameObject.CompareTag("Ground"))
        {
            isJumping = false;
        }
    }
}

4.将脚本添加到玩家身上

5.给玩家添加刚体组件,并将玩家拖到player body这里

6.将摄像机拖到玩家的子对象中并重置摄像机的位置,并调整摄像机的位置

7.将摄像机拖到脚本中

8.运行游戏就可以实现漫游了

9.优化(如果运行时发现屏幕有点抖或者玩家容易翻身,就把玩家的旋转全部冻结就没问题了)

相关推荐
妙为14 分钟前
unreal engine5(UE5)中使用Rider
ue5·游戏引擎·虚幻·rider
HyperAI超神经2 小时前
深度估计准确率冲上0.9,Meta提出VLM³,论证视觉模型天生会学3D,以Qwen3-VL-4B为基础实现多任务的统一建模
人工智能·3d·大模型·多模态·空间推理·3d感知·3d理解
WarPigs2 小时前
Unity AB包资源加载管理器
unity
ZK_H3 小时前
3D NAND Flash手册阅读指南
3d
程序员正茂3 小时前
EasyAR使用OpenCV下USB摄像头作为自定义相机
opencv·unity·easyar
诙_3 小时前
unity——C#
unity·c#·游戏引擎
百度搜知知学社4 小时前
ScreenCraft壁纸进阶玩法:4K超清与3D视差动态效果全解析
3d·动态效果·壁纸·4k超清·3d视差·screencraft
插件开发4 小时前
矢量路径运算如何选GPU技术?——适用算法对比及OpenGL/Direct3D/CUDA选型指南
算法·3d
CG_MAGIC4 小时前
3ds Max粒子系统:雪与雨特效制作
3d·blender·材质·效果图·渲云渲染
晓13134 小时前
【Cocos Creator 3.x】篇——第一章 简介
前端·javascript·游戏引擎