Unity 向一个方向移动多少距离

一、获取一个向量(方向)

二、把获取到的向量normalized归一化,这个很重要。如果不normalized归一化,那么移动距离就会偏移。

向量归一化可以用比较通俗的话,比如B点到A点的方向: (-3.4, 2.5, -2.5),B点到A点的方向normalized归一化之后向量变成(-0.7, 0.5, -0.5)。我们物体的前方向是tranfrom.forward(0,0,1)如果我们乘以20那就是(0,0,20)Z轴方向增加20,

同样的如果我们的向量没有归一化,(-3.4, 2.5, -2.5)乘以20,就是(-68,50,-50),移动距离就会超过20。

三、自身坐标+(获取到的向量*距离)=终点(要移动的位置)

//获取B点到A点的方向 (A到B点的方向=B-A,B点到A点的方向=A-B)
Vector3 dir = targetTrans.position- transform.position;           
// dir.normalized向量归一化,乘以距离,得到一个新的向量(Unity单位是米) 
Vector3 moveDir = dir.normalized* distance;
//起点(自身位置)加上方向等于终点(要移动到的位置)                   
Vector3 moveToPos = transform.position + moveDir; 


          
//绘制射线
Debug.DrawLine(transform.position, moveToPos, Color.red);

 

图示

获取一个B点A点的方向

向量与向量归一化之后的区别

向量归一化之后

向量没有归一化

 

向这个向量(方向)移动多少距离。

如图所示移动距离10米,两点距离是7.85米。射线的长度,略超过A点。通过射线的长度可以看出来。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值