可以看一下 DDA 算法 和 Bresenham 算法
他又不用自己去实现绘图,只是使用引擎而已,用不上这些算法。
↑ 紫薯布丁
兄弟,我40岁了,可能脑子已经不好使了,能不能直接给我一个公式啊。现在已知pos1(x1,y1) , pos2(x2,y2) 已知我要10个点,平分线长,怎样得到一个这10个点滴数组?
求得了方程 你再根据自己需要的改吧
2点式有个弊端 不能表示锤子或者水平的直线
这个问题超级简单。。。我看楼上那些给这个那个公式的,我也是醉了。。太麻烦了。。。
2点决定了一个向量 delta = cc.Vec2(…) ,给delta向量长度拆分,你想要多少个点(无数个点)都可以,使用起始向量加上这个 delta 向量的拆分向量,这条直线上的所有点全部拿到了。
兄弟,当然,我很看好你,那这个问题泥:http://forum.cocos.com/t/cc-jumpto-jumpto-position-y-height-jumps-pos-x-y/56380
在此我也感谢 @yyd137138329 @1111228滴回答
兄弟,我试了一下,不知道具体咋操作
你必须有粒度。这个没有什么难的,只是要细心,按照像素来。例如设计分辨率为1080p,你的每个点是1像素,那么横竖点是不一样的。如果是一个像素,你只在右边设计,那么两点间的点数是这条线的投影。就举一个例子吧,后面的自己想,如图:
这个问题就稍微复杂一点,但是也并不是非常复杂。2种解决方式:
第一,使用贝塞尔曲线,这种方式用不着向量,网上有个现成的公式,二阶的贝塞尔曲线公式,通过起点、终点、控制点能直接返回曲线上所有的点,我有个祖马游戏,地图编辑器上的曲线就是用贝塞尔公式计算的。
第二,依然使用向量求解,因为你使用帧数来拆分,简单点做法:x轴方向做匀速运动,y轴方向做匀速运动,x轴方向、y轴坐标方向向量使用帧数等分,就是速度向量了,这样2个方向同时运动就是一个抛物线路径。当然,这里面有一种情况,如果你想做加速度和减速度运动的话,那需要考虑加速度向量以及摩擦力的值,稍微会麻烦一点,思路还是从2个方向考虑。
不会操作的话,说明你向量用的太少了。。你可以看一些简单的物理引擎的源码,都是向量操作,这样会加深你对向量的理解。
给我两个解好吗?我真滴老了,没有你们有时间了,所以我直接拿你滴解来当学习,咱是有偿滴好吗?两个解,你加我QQ29492511,200元小小回报,解答直接放这里吧,我也不会开玩笑滴,我在这里都混2年了,信誉很重要哈。注意,有一个要求, jump 那个要完全引用官方做法,意思说官方是怎样算出每帧坐标滴,这里也要用相同算法。
想知道是什么原因导致你选择不使用graphic画的
要是简单的想取均分的点坐标的话,可以直接用工具方法
cc.Vec2.lerp(to, radio, out)
示例:
let from = cc.v2(0, 0);
let to = cc.v2(100, 150);
let points = [from]
for (let i = 0; i < 10; i += 1) {
let result = from.lerp(to, (i + 1) / 10.0);
points.push(result);
cc.log(result.x, result.y);
}
或者你也可以用方向向量乘长度以后平移到起点位置取到终点坐标哇
http://forum.cocos.com/t/cc-jumpto-jumpto-position-y-height-jumps-pos-x-y/56380/15?u=surevision
写啦,试试ヾ ̄▽ ̄
我晚上下班回去看看,你加我QQ 29492511,有一个新年红包