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
1 Like
I don’t know what to use Vector.add to add.
Here is my code:
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.
goalPoint = 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.
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.
yak = hero.findNearest(hero.findEnemies())
distance = hero.distanceTo(yak)
if distance < 10:
# First, make a Vector from the yak to you
vector = Vector.subtract(hero.pos, distance)
# Now use Vector.normalize and Vector.multiply to make it 10m long
vector = Vector.normalize(vector)
vector = Vector.multiply(vector, 10)
# Once you have the 10m vector away from the yak, use Vector.add to add it to your goal vector!
pass
# Finally, determine where to move by adding your goal vector to your current position.
moveToPos = Vector.add(hero.pos, goal)
hero.move(moveToPos)
also, i don’t know how to format code properly, can you tell me please how to do 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.
goalPoint = 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.
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.
yak = hero.findNearest(hero.findEnemies())
distance = hero.distanceTo(yak)
if distance < 10:
# First, make a Vector from the yak to you
vector = Vector.subtract(hero.pos, distance)
# Now use Vector.normalize and Vector.multiply to make it 10m long
vector = Vector.normalize(vector)
vector = Vector.multiply(vector, 10)
# Once you have the 10m vector away from the yak, use Vector.add to add it to your goal vector!
pass
# Finally, determine where to move by adding your goal vector to your current position.
moveToPos = Vector.add(hero.pos, goal)
hero.move(moveToPos)
i stiil can’t format it
Click on this button to format your code:
1 Like
thank you for that, here is my code now:
# 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.
goalPoint = 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.
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.
yak = hero.findNearest(hero.findEnemies())
distance = hero.distanceTo(yak)
if distance < 10:
# First, make a Vector from the yak to you
vector = Vector.subtract(hero.pos, distance)
# Now use Vector.normalize and Vector.multiply to make it 10m long
vector = Vector.normalize(vector)
vector = Vector.multiply(vector, 10)
# Once you have the 10m vector away from the yak, use Vector.add to add it to your goal vector!
goal = Vector.add(goal, vector)
pass
# Finally, determine where to move by adding your goal vector to your current position.
moveToPos = Vector.add(hero.pos, goal)
hero.move(moveToPos)
it now says that
hero.move(moveToPos)
needs to have an ‘x’: number and ‘y’: number even though it was already there.
The code is good. But here you have to write goal, instead of distance.
1 Like
Im trying to load the level right now, but make sure that you have all your lines indented correctly (also im a huge fan of btd 6 too )
is there any more errors? My hero just absent-midedly walks into the first yak
I can see that, from your profile picture (i think)
Yea, can you post your updated code?
# 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.
goalPoint = 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.
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.
yak = hero.findNearest(hero.findEnemies())
distance = hero.distanceTo(yak)
if distance < 10:
# First, make a Vector from the yak to you
vector = Vector.subtract(hero.pos, goal)
# Now use Vector.normalize and Vector.multiply to make it 10m long
vector = Vector.normalize(vector)
vector = Vector.multiply(vector, 10)
# Once you have the 10m vector away from the yak, use Vector.add to add it to your goal vector!
goal = Vector.add(goal, vector)
pass
# Finally, determine where to move by adding your goal vector to your current position.
moveToPos = Vector.add(hero.pos, goal)
hero.move(moveToPos)
Almost the same except for vector = Vector.subtract(hero.pos, goal)
is different
1 Like
Here I did not put the (goal)
maybe you would want to delete that
ok i’ll do that, i think it might work
1 Like
It might work. I have a completely different code, so I will try to help
my hero died in less than 7 seconds
1 Like