我给一个预制体添加这样一个函数
然后在另一个节点脚本里,并且动用Move函数生成
###但是启不启用动作回调,运动的方向不一样,为啥会这样。
项目在这 NewPr9.rar (195.4 KB)
启不启用动作回调, 这句话是什么意思?
![]()
分别调用这两个函数,一个有动作回调,一个没有
好像添加了回调坐标系变了哎
对呀,为啥添加回调就变,或者说本来就应该变,为啥不填回调就不变
好像是你pre.js中位置赋值有问题……
我改成这样就对了:
monster.x = 0;
monster.y = 0;
monster.getComponent('move').move(3);
2赞
请问你这样是怎么贴出来代码的 这样比截图什么的好多了
解决了,要先给位置赋值再移动,但是我好奇为啥会这样。那样写为啥不填回调就不变,自己想了好久没有想出解释的原理。我已经给了他父节点了呀
我单步跟踪进去帮你看一下,你的monster节点初始坐标是462,384(就是你的prefab根节点的初始坐标)。runAction的时候会把这个记录为初始坐标,并且cc.moveTo并不是一定移动到目标坐标,而是计算之后变成moveBy。目标点(300,-30)在(462,384)的左下角,节点按cc.moveBy(time, 300-462, -30-384)往左下角移动了。但是如果runAction的动作超过一个,好像(没有认真看,推测的)就不会直接在初始化时记录节点坐标,而是在开始运动时记录(这时你已经设置position为0,0了)。因此不是你启不启用回调的问题,finished换成其它action也一样。所以应该在runAction之前设置好坐标。
2赞
不好意思昨天团年,没有逛论坛
