逻辑再次崩盘,来个人救救我吧!!!

逻辑实现预计效果:激光一直在飞机和屏幕上方中间显示。

然后现实总是和想象背道而驰,码不醉人人自醉!!!


有点晕晕的,感觉逻辑并没有出问题,为何效果和我想得那么不样呢

这是效果图


补充一下,子弹和飞机兄弟节点

你等式中(战机的 Y)是 Math.abs()后的值吗

不是绝对值,就是node上的Y

建议你激光的锚点 y 始终是 0,坐标是飞机的中上位置,激光的长度 = 想要到达位置世界坐标 y - 世界坐标下的飞机的y -飞机的高 / 2

OKK,这个办法会了,但是我还是想知道我的逻辑哪里崩了 :weary:

你带入一个特殊值战机 y=0;激光长度没问题,但是激光 y 轴锚点=(画布一半高度-0)/2这是什么

我都给他们转到画布的相对坐标了,然后以画布锚点建立的坐标系,长度就是画布一半高度加减上战机的Y轴值-战机自身高度的一半

长度没问题,锚点公式是什么

画布一半高度加减战机的Y轴值之后的一半,简单的说就是取两个点的中间值

在你激光坐标为 0 的情况下,激光的上边界世界坐标=-(激光锚点-1)*激光的高,你应该拿这个公式来计算锚点,但是你的这些做法既不方便,又不好理解

为什么不设置位置,而去设置锚点

你这里的画布一半高度我怀疑你是指 0.5 而不是cc.winSize.height/2,如果是0.5的话你这说法有问题,让人误解,如果是cc.winSize.height/2,看画面根本也不可能是

我觉得这便是人类区别于动物的地方

这样会需要坐标系的转换,当时比较懒,就想直接用数值去控制,然后出现了问题

另外你非要用设置锚点的方式设置激光位置公式上面已经写了
激光 y 锚点 = -(cc.winSize.height/2)/激光的高+1;

激光的y值是多少

激光Y值随战机的Y改变而改变,通过画布最高点和战机的Y点中间点确定的锚点给的长度

y都同步了,激光的y锚点设置为0不就可以了?

没懂,那样的话,飞机继续上升,激光只是长度改变,位置不是没变

你激光的y不是随飞机y变化而变化吗