重力摆动
重力摆已在溜溜侠盗中使用,游戏二维码如下:

上一篇文章
绳子缠绕和解开
溜溜侠盗中,小角色在不受控制时,会有一个受重力和绳子牵引力进行摆动的过程,刚开始我时这么想的
换种思路:
是不是可以通过旋转的角度来计算重力摆的加速度,超出了最低点后,加速度变成负值,速度慢慢变小,小到一定值后开始反向运动。最终出来的效果:

碰到障碍物时
碰到障碍物时不能让重力摆穿透过去,处理方法就很简单了
知道障碍物的位置,计算出来一个重力摆到这个障碍物的角度,当重力摆摆动的角度超过这个时把速度降到0,同时角度取成比当前障碍物角度大点。效果:

好了,代码了:
export default class Pendulum extends cc.Component {
private gravity:number = 20;
private len:number = 60;
private fps:number = 60;
private velocity:number = 0;
private angle:number = 80;
onLoad () {
}
start () {
}
update (dt) {
let g_segment :number = this.gravity / this.fps;
// Calculate current angle in radians for use with sin
let r_angle :number = this.angle * (Math.PI / 180);
// Use our equation to get the additional change to velocity (in degrees, not radians)
this.velocity += (g_segment / this.len) * Math.sin(r_angle) * (180 / Math.PI);
this.velocity *= 0.98;
// cc.log(this.velocity);
this.getReserver();
this.setAngle(this.angle - this.velocity);
}
private getReserver():void
{
if (this.angle <= -20) {
cc.log(this.angle,'xx');
this.angle = -19;
this.velocity = 0;
}
}
public setAngle(n :number) :void
{
this.node.angle = n;
this.angle = n;
// cc.log(this.angle);
}
QQ交流群:1087682890

