플래시가 처음인데 내 코드에서 버그를 찾을 수 없습니다. 나는 우주선이 벡터 속에서 가속 할 수 있고 최대 속도 이상으로 가속 할 수 없으며 가속을 멈추었지만 마찰 (공간 먼지)으로 고통받는 속도 벡터를 유지하기를 원한다. (그것은 2 차원 단계에서 발생합니다.)공간 이동 버그 FLASH
내 수학이 올바른 생각,하지만 난 가끔 velVector 이 NaN을 반환 버그를 얻을 수는 - 여기 내 코드입니다 :
var friction:Number = .96;
var force:Number = .1;
var maxVel:Number = 3;
var accVector:Object = new Object();
var velVector:Object = new Object();
var velocity:Number;
var acceleration:Number;
에서 선박 지점의 경우 오른쪽 방향에서는 'accelerate'함수를 실행하고 그렇지 않으면 'drift'함수를 실행합니다. 항상 '이동성'을 수행합니다.
function accelerate():void {
curRotation.vx = Math.cos(rotation/180*Math.PI);
curRotation.vy = Math.sin(rotation/180*Math.PI);
var angle:Number = Math.atan2(curRotation.vy, curRotation.vx);
velocity = Math.sqrt(velVector.vx^2 + velVector.vy^2); //get velocity in both directions
acceleration = (maxVel - velocity)/maxVel*force; //this is to make it harder to accelerate when it approaches maxvelocity
accVector.vx = Math.cos(angle) * acceleration; //accelerate in each dimension
accVector.vy = Math.sin(angle) * acceleration;
velVector.vx += accVector.vx; //add acceleration to velocity
velVector.vy += accVector.vy;
}
function drift():void {
velVector.vx *= friction; //decrease velocity when not accelerating
velVector.vy *= friction;
}
function moveShip():void {
trace("velocity", velocity)
x += velVector.vx; //move
y += velVector.vy;
}
많은 감사!
'angle' 변수는 숫자 유형이지만 소문자 "n"을 부여했습니다. 실제 코드에도 이와 동일한 실수가 있습니까? –
아니요. 죄송합니다. – user2237931
^2을 사용할 수 있는지 몰랐습니다. (직접 시도했습니다.) 그러나 그것은 "5^2"가 25가 아닌 7과 같기 때문에 원하는 것처럼 보이지 않습니다. – mitim