如图,我正在做一款街机游戏,
小车围绕跑到跑动,当小车跑到拐角的时候,需要做适当的旋转,车头要朝下,
我用cc.bezierTo来做,请问如何获取到小车走动时cc.bezierTo的旋转角度呢
var bezierTo1 = cc.bezierTo(10, typeArray);
var act = bezierTo1.easing(cc.easeInOut(10));
this.carNode.runAction(act);
如图,我正在做一款街机游戏,
小车围绕跑到跑动,当小车跑到拐角的时候,需要做适当的旋转,车头要朝下,
我用cc.bezierTo来做,请问如何获取到小车走动时cc.bezierTo的旋转角度呢
var bezierTo1 = cc.bezierTo(10, typeArray);
var act = bezierTo1.easing(cc.easeInOut(10));
this.carNode.runAction(act);
提供思路,获取上次和本次坐标,根据坐标计算角度!
我用贝塞尔曲线做不出自己想要的弧度,您是怎么解决的
我没用曲线,直接切成4个四分之一圆加两个横线,两个竖线,这就好算了
我最后在update中做的,描上每个点的坐标,update中控制运行速度,就实现加速和减速了。
能分享下吗
今天用了一种新方法来实现,用runaction的moveto来移动车子
var MAXALLCAR = 32; //车子数量
//this.data. 定义的每个车子的坐标位置和旋转角度
var animArray = [];
var det = 0.1;
var roate = 0;
for (let index = 0; index <= MAXALLCAR; index++) {
const element = this.data[index];
var move = cc.moveTo(det, element.pos);
var sound = cc.callFunc((_,i)=>{
self._soundManage.playSound_carRun();
},this.carNode,idx)
animArray.push(sound);
if (roate != element.rotation) {
var roat = cc.rotateTo(det, element.rotation);
animArray.push(cc.spawn(move, roat));
roate = element.rotation;
} else {
animArray.push(move);
}
}
var act = cc.sequence(animArray);
var action = act.easing(cc.easeInOut(2.0));
var anim = cc.sequence(
action,
cc.callFunc(()=>{
self._soundManage.playSound_carStop();
})
);
this.carNode.runAction(anim);
虽然实现了效果但是在转角的时候不是很平滑,有待优化
楼主能说下直线action和贝塞尔曲线action怎么衔接的吗,每次跑到曲线就会减速
拐弯时就应该减速…真实的模拟了现实世界.