0

I'll just start by saying I'm looking at the "projectile" code found in the game "Runescape" originally wrote in Javascript. The original code can be found somewhere half way down the page of this link https://github.com/zg/317-client titled "Projectile". Ultimately what it does is track an object a move towards it at a certain speed relative to the targets distance and the amount of ticks left. The reason I'm racking my brains on this, originally was because of the tan function for the direction of the velocity, but now I'm trying to figure out part of an equation used in calculating the up and downwards force.

I've translated a basic form of this code to Unity in C# to try and reverse engineer it.

void Update()
{
    if(x >= distance)
    {
        x = 0;
        z  = 0;
        duration = 20;
        velocityX = 0; velocityZ = 0; acceleration = 0f;
        mobile = false;
        target();
    }
    
    sim();
    duration-= interval;
}


void target()
{
    velocityX = distance / duration;
    

    if (!mobile) {
        velocityZ =  -velocityX * Mathf.Tan(elevationPitch * 0.02454369f);
    }
}

void sim()
{
    acceleration = 2f * (- z - velocityZ * duration) / (duration * duration);

    mobile = true;

    x += velocityX * interval;
    z += velocityZ * interval + 0.5f * acceleration * interval * interval;
    velocityZ += acceleration * interval;

    cube.transform.position = new Vector3(x,z,0);
}

}

I understand how the velocity addition works in regard to interval, and that velocityX is set to move along x distance linearly over a given duration. If I understand the tan function correctly also, it is used to determine the angle of trajectory and thus the direction of velocity.

In the past couple of days that I have been analyzing this, I was googling a lot about parabolic trajectory and anything related to this topic. I found that the 0.5f * acceleration * interval * interval is the formula for calculating distance and gravity - with the google image here... enter image description here

Now what I really don't understand is the acceleration formula :

acceleration = 2f * (- z - velocityZ * duration) / (duration * duration);

Does this look familiar to anyone? or can you figure out the maths behind it? I basically was hoping someone could explain this to me. I would also say that I don't fully understand the gravity formula use in this code, it looks like acceleration is being used in place of gravity.

Thanks for your time, guys!

  • `acceleration is being used in place of gravity` ... gravity results in acceleration ... basically, gravity is acceleration – jsotola Feb 15 '22 at 04:23
  • Thanks for the reply, I believe acceleration does this to make sure that the projectile Z position reaches 0 at the end of the duration, to keep the gravity consistent through different target distances and duration of travel. Now I know what its used for, I'm just trying to understand how the formula actually does that. `acceleration = 2f * (- z - velocityZ * duration) / (duration * duration);` Thanks for your time, again! – Baraccuda Feb 15 '22 at 22:39

0 Answers0