Unity二维平面上物体的移动(十九)

上一节中实现将机器人巡检各物体位置,并逐一到达各物体跟前。但此时机器人是不具备刚体属性,也就是能够穿越各类物体。
当机器人从无刚体属性变成刚体属性时,给他再加上碰撞盒属性,他就不会随便穿过物体了。那此时他想到达目标物体,我们提到了会在实际的场景中遇到障碍物的情况,同时会出现选择哪条路径绕过障碍物,选择最优路径解的情形。
Unity3D 本身自带了导航系统功能,不过为理解的深入一些,也可以按照自己的思路来做设计导航功能。Unity自带的导航功能是需要有3D空间内的网格渲染或者是地形,在二维平面中暂时没有找到相关内容。
所以我们需要自己实现一把寻路算法。

Unity中,鼠标拖拽物体移动是一个常见的交互设计,通常用于游戏场景中的直接操作。以下是步骤: 1. **创建Rigidbody组件**:首先,确保你的游戏对象有一个刚体(Rigidbody)组件,这是为了模拟物理运动。 2. **编写脚本**:通常会为游戏对象添加一个空物体或者通过挂载脚本来实现。在C#脚本中,可以使用`OnMouseDown`、`OnMouseDrag``OnMouseUp`事件来监听鼠标动作。 ```csharp using UnityEngine; using System.Collections; public class MouseDragObject : MonoBehaviour { private Rigidbody rb; // 刚体引用 void Start() { rb = GetComponent<Rigidbody>(); // 获取当前对象的刚体 } void OnMouseDown() { dragStartPos = Input.mousePosition; // 记录开始拖动的位置 rb.isKinematic = true; // 将刚体设置为不可碰撞,防止自动移动 } void OnMouseDrag() { Vector3 newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); // 转换屏幕坐标到世界坐标 newPosition.z = transform.position.z; // 维持Z轴不变(假设你是平面移动) transform.position = newPosition - dragStartPos; // 移动物体 } void OnMouseUp() { rb.isKinematic = false; // 恢复动态状态 dragStartPos = Vector3.zero; // 释放后清空初始位置 } } ``` 3. **配置组件**:将上述脚本附加到你想用鼠标拖拽移动的游戏对象上,并在编辑器里调整它的附着点(Attach To)。 当你按下鼠标并开始拖动时,物体就会按照鼠标移动的方向在平面上移动;松开鼠标则停止移动
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值