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

相关推荐
lialaka7 分钟前
「未来星途(Future_Odyssey)」——全语音_3D_AI_具身交互智能数字教官与全双工星际科普沉浸舱[1]
人工智能·3d·交互
丁小未12 分钟前
Unity 几种常见合批手段的要求
游戏·unity·合批·srpbatcher·动态合批·静态合批
科技大视界16 小时前
非接触3D形貌测量:按样品类型选设备指南
3d
柒木森17 小时前
AAAI 2026 | Arbi-3DGSR:任意倍率 3D 高斯超分辨率
3d
七牛云行业应用20 小时前
用 Codex 操控 Blender 做 3D 场景:从安装 addon 到跑通第一条指令
人工智能·3d·ai编程·blender
旧物有情20 小时前
游戏开发常用架构 #MVP,MVC
游戏·unity·架构·mvc
PHOSKEY20 小时前
FPC精密测量与GL-8000系列3D线激光轮廓测量仪在手机制造中的应用
3d·智能手机·制造
勇踏前人未索之境21 小时前
Unity打包运行于鸿蒙手机
unity·智能手机·harmonyos
玖玥拾1 天前
Unity 3D 笔记(十一)UI 框架进阶:栈弹窗交互、BasePanel 基类虚方法、DoTween 界面动画
笔记·3d·unity
数智工坊1 天前
RehearseVLA深度解析:基于物理一致世界模型的VLA强化学习后训练框架
人工智能·深度学习·3d·机器人