unity人物刚体移动_Unity3D实现2D人物移动-总结篇

本文总结了在Unity3D中实现2D角色平滑移动的方法,包括通过鼠标点击控制角色移动。文章详细分析了平滑移动的常见问题,如平移中的错误用法、移动结束时的停止问题,探讨了各种移动实现方式的优缺点,如使用Translate、MoveTowards和Lerp,并提供了基于时间线的位移实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

最近研究Unity3d,2d寻路的实现。所以又一次涉及到了角色坐标位移的问题。系统的对于角色鼠标点击移动这个简单问题进行整理和总结。本来就是一个简单的几何问题,结果发现已经有两个小坑,顺便填上,这里做下总结。

实现

需求:通过鼠标点击,控制2d角色移动,就是点哪里,角色向移动到哪里

问题分解:按照时间进行动画分解,鼠标输入(动画开始)、平移(动画进行)、移动结束(动画结束)

前提:这里前面的文章基本解决了一些基础的知识,比如IO获取(鼠标输入),移动的基本方式(Unity中的位置系统transform)

坑:1、平移中的平滑移动,2、如何确定移动了目标点,并使物体停止下来

坑1:平移中的平滑移动

补充知识,关于角色的平移和位置更新,Unity无非就几种方式

A、transform.Translate(new Vector3(1, 1, 1) * moveSpeed * Time.deltaTime); // Translate方法移动不会考虑刚体等碰撞(会直接穿过物体)

// 确保我们的速度不会超过maxDistanceDelta B、Vector3.MoveTowards(transform.position, targetPos.position, speed * Time.deltaTime);

// 速度会超过移动速度,像弹簧一样 C、Vector3.Lerp(transform.position, targetPos.position, speed * Time.deltaTime);

D、直接设置transform.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值