Curve By Code如何使用此代码执行此操作?

时间:2017-01-03 05:39:47

标签: c# .net actionscript-3 math curve

我试图弯曲球的运动。此代码直接移动对象并旋转对象,但它不会以曲线运动方式移动。

if (this.ballstart.hitTestObject(this.back)) {
    trace("Hit back");
    trace("ballstart rotation: " + this.ballstart.rotation);
    removeEventListener(Event.ENTER_FRAME, update);
    addEventListener(Event.ENTER_FRAME, BowlingScoreClass);

} else {
    trace("move to back");
    this.ballstart
    this.ballstart.rotation -= -30;

    //trace("this ballstart rotation: " + this.ballstart.rotation);

    this.ballstart.y = this.ballstart.y - speed;
    speed = 15;
    /*speed = speed + 0.01;*/

    if (this.ballstart.y < -height) {
        x = Math.sin(this.ballstart.rotation * (Math.PI / 180)) * speed;
        y = Math.cos(this.ballstart.rotation * (Math.PI / 180)) * speed * -1;
        this.ballstart.x += x;
        this.ballstart.y += y;
    }
}

对于非AS3编码器,请理解上述代码在我的项目的显示刷新功能(通过FPS)期间运行。这里.rotation只是在自己的轴上旋转一个对象。我需要控制ballstart.xballstart.y来进行曲线运动。

此代码也将以v动作移动,但我希望顺利修复我如何更改它来执行此操作?我需要在顶部代码中弯曲?

if (sprite.y > 500) {
    trace(height);
    sprite.y -= 4;
    sprite.x += 4;
} else if (sprite.y > 400) {
    trace(height);
    sprite.y -= 4
    sprite.x += 2

} else if(sprite.y > this.height) {
    sprite.y -= 4
    sprite.x -= 2

}

1 个答案:

答案 0 :(得分:2)

问题是y轴的速度总是一个常数(+/- 4)所以它总是会创建一条直线而不是一条曲线。

引入重力变量(g),它将改变每帧的y轴速度,然后计算新y位置的位置。

yVelocity -= g; sprite.y += yVelocity;