红点作为预制体 点击按钮创建一个 并且会靠近白色块
代码如下
appPostion 就是白色块的坐标
this.node.position就是红色块的坐标
我想知道 为什么要先 appPostion sub(减去) this.node.position
direction.normalize() 这个 我看normalize源码
源码能看懂 就是把向量化成 最大为1 最小为0的数 然后再拿坐标去乘以这个数
但是放到这里 就不知道为什么要这么用了 然后后面是缩放方法 mul
红点作为预制体 点击按钮创建一个 并且会靠近白色块
代码如下
我想知道 为什么要先 appPostion sub(减去) this.node.position
direction.normalize() 这个 我看normalize源码
mul的是速度,向量化得到的是方向
那为啥要 var direction = appPostion.sub(this.node.position); 先减去
你要先复习一下高中数学,向量的运算,点A坐标减去点B坐标,得到一个B指向A的方向向量,并且向量的长度等于两个点的距离
确实要去看一下
direction是起点和终点的x,y差 假设x = 3 y = 4
normalize 是算出斜边为1的时候x y 等于几
再乘一个speed就是单位时间x y的偏移量
不知道有没有说明白
appPostion sub(this.node.position) 是求出方向向量,
direction.normalize是把方向向量转化成单位向量,也就是大小为1的向量,
direction.normalize.mul(this.speed) 是在该方向上要增加的坐标差值,加到this.node.position上就是最终坐标。
这里其实写的有问题,没有用到dt,会导致移动速度受帧率影响。
可以改成这样:
this.node.position = this.node.position.add(direction.normalize().mul(this.speed*dt)); 表示在dt时间内的移动,只跟时间有关,跟帧率无关