Mark、
mark、
mark
mark
mark
mark
研究了一下点的分布规律,看起来没有什么规则,会出现两个问题
1.距离不一,时间固定,则抖动时点与点之间移动速度时快时慢
2.点相对中心有远有近,抖动时会更偏向于距离远的点方向抖动
虽然在快速抖动时比较难注意到
试着将抖动的多个点的之间的距离和角度都固定成一个值了
抖动的路径是在绘制一个正八角星,抖动很规则,比对后个人感觉效果更好一些
var shakeY = 10;//初始震动距离
var sv = cc.v2(0,shakeY);
this.node.runAction(
cc.repeatForever(
cc.sequence(
cc.moveTo(0.02, sv.rotate(Math.PI / 4 * (0 * 3) 8)), cc.moveTo(0.02, sv.rotate(Math.PI / 4 * (1 * 3) 8)),
cc.moveTo(0.02, sv.rotate(Math.PI / 4 * (2 * 3) 8)), cc.moveTo(0.02, sv.rotate(Math.PI / 4 * (3 * 3) 8)),
cc.moveTo(0.02, sv.rotate(Math.PI / 4 * (4 * 3) 8)), cc.moveTo(0.02, sv.rotate(Math.PI / 4 * (5 * 3) 8)),
cc.moveTo(0.02, sv.rotate(Math.PI / 4 * (6 * 3) 8)), cc.moveTo(0.02, sv.rotate(Math.PI / 4 * (7 * 3) 8)),
)
)
);
8个计算后的点是:
(0.00, 10.00),(-7.07, -7.07),(10.00, -0.00),(-7.07, 7.07),(-0.00, -10.00),(7.07, 7.07),(-10.00, 0.00),(7.07, -7.07)
1234
mark
mark
like it
点赞。…
分享一个
shakeCamera(camera?: cc.Camera, param?: { times?: number, duration?: number, amp?: number, srcPos?: cc.Vec2 }) {
camera = camera || cc.Canvas.instance.getComponentInChildren(cc.Camera);
this.shakeNode(camera.node, param);
}
shakeNode(node: cc.Node, param?: { times?: number, duration?: number, amp?: number, srcPos?: cc.Vec2 }) {
if (!param) {
param = { times: 6, duration: 0.2, amp: 10 };
}
let times = param.times || 6;
let duration = param.duration || 0.2;
let amp = param.amp || 10;
let srcPos = param.srcPos || node.getPosition();
let destPos = new cc.Vec2();
let arr: cc.FiniteTimeAction[] = [];
for (let i = 0; i < times; ++i) {
if (i == times - 1) {
destPos.x = destPos.y = 0;
} else {
cc.Vec2.random(destPos, amp);
}
arr.push(cc.moveTo(duration / times, srcPos.add(destPos)));
}
node.runAction(cc.sequence(arr));
}
大佬 这怎么改
将那一句替换为:
let angle = Math.random() * Math.PI * 2;
destPos.x = Math.cos(angle) * amp;
destPos.y = Math.sin(angle) * amp;
大佬牛批~~
param参数怎么传合适??
{ times?: number, duration?: number, amp?: number, srcPos?: cc.Vec2 }
不传,直接用默认值
学习了 mark
mark. get it.