Unity 鼠标拖拽3D物体跟随移动的方法

之前我们研究过UI拖拽跟随鼠标移动的方法:https://blog.csdn.net/mr_five55/article/details/135562325

但是该方法不适合3D场景。

假如我们要通过鼠标拖拽3D物体移动,那么可以使用以下控制方法:

复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DragObject : MonoBehaviour
{
    private Vector3 offset;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }


    // 3D场景移动物体
    private void OnMouseDown()
    {
        // 由于物体为3维世界坐标,鼠标的坐标是2维屏幕坐标,所以需要进行相关坐标转换,此处涉及3个步骤
        // 1、先把物体的世界坐标转换成3维屏幕坐标,再获取物体的三维屏幕坐标的Z轴坐标:Camera.main.WorldToScreenPoint(transform.position).z
        // 2、把鼠标的2维坐标转换成3维世界坐标
        // 3、当前物体位置减去鼠标3维世界坐标,获取它们之间的距离
        offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.WorldToScreenPoint(transform.position).z));
    }

    private void OnMouseDrag()
    {
        // 把物体与鼠标的距离加上鼠标坐标并赋予物体即让物体移动到坐标位置
        Vector3 newPosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.WorldToScreenPoint(transform.position).z)) + offset;
        transform.position = newPosition;
    }
}

效果杠杠的哦。

Unity 鼠标拖拽3D物体跟随移动的方法

相关推荐
WarPigs10 小时前
游戏签到系统
unity
鹿鸣天涯13 小时前
kali 2026.1 vmware虚拟机内看不见鼠标处理方法
网络·计算机外设
小拉达不是臭老鼠13 小时前
Unity中的UI系统之UGUI
学习·ui·unity
万兴丶13 小时前
Coplay适用于 Unity 的“Al 代理”使用指南
unity·游戏引擎·ai编程
魔士于安16 小时前
Unity材质球大合集
unity·游戏引擎·材质
mxwin18 小时前
Unity Shader 冰面 Shader 制作原理与流程
unity·游戏引擎·shader
小拉达不是臭老鼠19 小时前
Unity中的UI系统之UGUI_登陆面板实现
ui·unity
郝学胜-神的一滴19 小时前
[简化版 GAMES 101] 计算机图形学 11:频域·卷积·抗锯齿
c++·unity·图形渲染·opengl·three·unreal
CyL_Cly20 小时前
罗技鼠标驱动下载最新版2026
计算机外设
元气少女小圆丶1 天前
SenseGlove Nova 2+Unity开发笔记2
笔记·unity·游戏引擎