Play Home Contribute Github Join Us! Discourse Staff Members Github Contribution Guides Team

Skating Away Help Please [SOLVED]

I have been playing this level for quite some time and couldn’t figure it out. Could anyone help me with solving it?

// Move to the red X mark while avoiding the yaks.
// use Vector.normalize(vector1) to create a vector in the same direction as vector1, but with a distance of 1
// use Vector.multiply(vector1, X) to create a vector in the same direction as vector1, but with its distance multiplied by X

// The point you want to get to.
var goalPoint = new Vector(78, 34);

while(true) {
    // This creates a vector that will move you 10 meters toward the goalPoint
    // First, create a vector from your hero to the goal point.
    var goal = Vector.subtract(goalPoint, hero.pos);
    // Then, normalize it into a 1m distance vector
    goal = Vector.normalize(goal);
    // Finally, multiply the 1m vector by 10, to get a 10m long vector.
    goal = Vector.multiply(goal, 10);
    
    // To avoid the yaks, if you get within 10 meters of a yak, you should vector away from it.
    var yak = hero.findNearest(hero.findEnemies());
    var distance = hero.distanceTo(yak);
    if(distance < 10) {
        // First, make a Vector from the yak to you
        yak = Vector.subtract(hero.pos, yak);
        // Now use Vector.normalize and Vector.multiply to make it 10m long
        yak = Vector.normalize(yak);
        // Once you have the 10m vector away from the yak, use Vector.add to add it to your goal vector!
        yak = Vector.multiply(yak, 10);
        goal = Vector.add(goal, yak);
    }
    // Finally, determine where to move by adding your goal vector to your current position.
    var moveToPos = Vector.add(hero.pos, goal);
    hero.move(moveToPos);
}

Hey! Seems like your problem is that the variable yak is first declared as the entity object you found and then try to pass it to the following Vector.subtract function.

var yak = hero.findNearest(hero.findEnemies()); // 'It is not the position you get here!'
    var distance = hero.distanceTo(yak);
    if(distance < 10) {
        // First, make a Vector from the yak to you
        yak = Vector.subtract(hero.pos, yak); // 'It is not the position you use here!'

Besides of that, everything seems fine i believe :smile:

1 Like

@Shurutsue is right, you need to use yak.pos.
Another thing, look carefully at these lines:

// First, make a Vector from the yak to you
yak = Vector.subtract(hero.pos, yak);

from the yak, to you” Not the other way round.
I always used to find this hard. Don’t worry :grin:
:lion: :lion: :lion:

Thank you I finished the level!!! :sweat_smile::sweat_smile::sweat_smile:

2 Likes