Unity小功能实现:鼠标点击移动物体

ops/2025/3/4 7:58:14/
1、功能描述

    当玩家点击鼠标时,场景中的物体会移动到鼠标点击的位置。这个功能可以用于控制角色移动、放置物体等场景。

2、实现步骤

    创建Unity项目:首先,打开Unity并创建一个新的3D项目。

    添加3D物体:在场景中创建一个3D物体,比如一个球体(Sphere)。

    创建脚本:在Assets文件夹中创建一个新的C#脚本,命名为ClickToMove。

    编写代码:打开ClickToMove脚本,编写以下代码:

using UnityEngine;public class ClickToMove : MonoBehaviour
{// 移动速度,可以在Inspector面板中调整public float moveSpeed = 10f;// 目标位置private Vector3 targetPosition;// 是否正在移动private bool isMoving = false;void Update(){// 检测鼠标左键点击if (Input.GetMouseButtonDown(0)){// 获取鼠标点击的位置SetTargetPosition();}// 如果正在移动,向目标位置移动if (isMoving){Move();}}void SetTargetPosition(){// 从鼠标点击的位置发射一条射线Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hit;// 如果射线击中某个物体if (Physics.Raycast(ray, out hit)){// 设置目标位置为击中点的位置targetPosition = hit.point;isMoving = true;}}void Move(){// 计算移动方向Vector3 direction = targetPosition - transform.position;// 如果物体还没有到达目标位置if (direction.magnitude > 0.1f){// 移动物体transform.Translate(direction.normalized * moveSpeed * Time.deltaTime);}else{// 到达目标位置,停止移动isMoving = false;}}
}

挂载脚本:将ClickToMove脚本拖拽到场景中的球体上,使其成为球体的组件。

添加地面:在场景中创建一个平面(Plane)作为地面,确保鼠标点击时可以检测到地面的碰撞。

3、代码解释
  • moveSpeed:公共变量,用于控制物体移动的速度。你可以在Unity的Inspector面板中直接调整这个值。

  • targetPosition:私有变量,用于存储鼠标点击的目标位置。

  • isMoving:布尔变量,用于判断物体是否正在移动。

  • SetTargetPosition():这个方法通过射线检测获取鼠标点击的位置,并设置为目标位置。

  • Move():这个方法用于移动物体到目标位置。使用transform.Translate()方法来实现物体的移动。

  • Physics.Raycast():这是Unity中的一个内置函数,用于检测射线是否击中某个物体。

    通过这个简单的功能,可以轻松实现Unity中物体的鼠标点击移动。


http://www.ppmy.cn/ops/162992.html

相关文章

生成一个日期时间序列,从‘2024-12-03‘开始,每小时递增 oracle 转为达梦

-------------------------------生成一个日期时间序列,从2024-12-03开始,每小时递增---------------------------- ---原oracle : SELECT to_date(2024-12-03, yyyy-mm-dd) (ROWNUM - 1) / 24 data_time FROM dual CO…

无服务边缘融合架构:重新定义云原生应用边界

引言:零部署计算的革命突破 Airbnb迁移至LambdaEdge架构后,全球客房详情页渲染延迟降至35ms,冷启动时间缩至50ms以内。Stripe采用无服务边缘计算处理支付事务,成功将动态API响应P99延迟从210ms压缩至19ms。AWS官方基准显示&#…

leetcode第77题组合

原题出于leetcode第77题https://leetcode.cn/problems/combinations/ 1.树型结构 2.回溯三部曲 递归函数的参数和返回值 确定终止条件 单层递归逻辑 3.代码 二维数组result 一维数组path void backtracking(n,k,startindex){if(path.sizek){result.append(path);return ;}…

Git GitHub基础

git是什么? Git是一个分布式版本控制系统,用于管理源代码的变更。它允许多个开发者在同一个项目上协作,同时跟踪每个修改的历史记录。 关键词: 分布式版本控制软件 软件 安装到我们电脑上的一个工具 版本控制 例如论文&…

文生图开源模型发展史(2014-2025年)

文生图开源模型的发展历程是一段充满技术革新、社区生态繁荣与商业化竞争的多维度演进史。 一、技术萌芽期(2014-2020年) 核心突破 2014年:GAN(生成对抗网络)诞生,首次实现数据驱动式图像生成&#xff0…

2 Redis 字符串(String) 命令大全

Redis 提供了丰富的字符串类型操作命令,支持设置、获取、修改、追加等多种功能。本文整理了常用的 Redis 字符串命令,并附带详细示例,方便学习和复习。 1. SET 命令 作用:设置指定 key 的值。 示例: SET mykey &quo…

Element Plus中el-tree点击的节点字体变色加粗

el-tree标签设置 <el-tree class"tree":data"treeData":default-expand-all"true":highlight-current"true"node-click"onTreeNodeClick"><!-- 自定义节点内容&#xff0c;点击的节点字体变色加粗 --><!-- 动…

判断按键盘是否好使的开机自启动PowerShell脚本

一、ps1脚本 文件名&#xff1a;KeyboardCheck.ps1 Function WaitForKeyPress($TimeoutInSeconds) {$KeyPressed $false$deadline (Get-Date).AddSeconds($TimeoutInSeconds)# 显示提示信息Write-Host "请在 $TimeoutInSeconds 秒内按下任意键(长时间没有检测到按下按…