Infinite Level Generation

9 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$99.99
List Price:  $139.99
You save:  $40
€93.84
List Price:  €131.38
You save:  €37.54
£80.95
List Price:  £113.34
You save:  £32.38
CA$137.04
List Price:  CA$191.86
You save:  CA$54.82
A$154.99
List Price:  A$216.99
You save:  A$62
S$136.27
List Price:  S$190.79
You save:  S$54.51
HK$783.50
List Price:  HK$1,096.94
You save:  HK$313.43
CHF 91.19
List Price:  CHF 127.67
You save:  CHF 36.48
NOK kr1,101.37
List Price:  NOK kr1,541.96
You save:  NOK kr440.59
DKK kr700.13
List Price:  DKK kr980.21
You save:  DKK kr280.08
NZ$169.21
List Price:  NZ$236.90
You save:  NZ$67.69
د.إ367.23
List Price:  د.إ514.14
You save:  د.إ146.90
৳10,965.37
List Price:  ৳15,351.96
You save:  ৳4,386.58
₹8,334.23
List Price:  ₹11,668.26
You save:  ₹3,334.02
RM477.95
List Price:  RM669.15
You save:  RM191.20
₦125,683.43
List Price:  ₦175,961.83
You save:  ₦50,278.40
₨27,806
List Price:  ₨38,929.52
You save:  ₨11,123.51
฿3,703.32
List Price:  ฿5,184.80
You save:  ฿1,481.48
₺3,259.92
List Price:  ₺4,564.01
You save:  ₺1,304.09
B$516.59
List Price:  B$723.25
You save:  B$206.66
R1,923.67
List Price:  R2,693.22
You save:  R769.54
Лв183.31
List Price:  Лв256.64
You save:  Лв73.33
₩137,775.97
List Price:  ₩192,891.88
You save:  ₩55,115.90
₪378.18
List Price:  ₪529.46
You save:  ₪151.28
₱5,754.62
List Price:  ₱8,056.70
You save:  ₱2,302.07
¥15,478.45
List Price:  ¥21,670.45
You save:  ¥6,192
MX$1,711.89
List Price:  MX$2,396.72
You save:  MX$684.82
QR364.36
List Price:  QR510.13
You save:  QR145.76
P1,383.88
List Price:  P1,937.49
You save:  P553.61
KSh13,448.65
List Price:  KSh18,828.65
You save:  KSh5,380
E£4,807.48
List Price:  E£6,730.67
You save:  E£1,923.18
ብር5,687.89
List Price:  ብር7,963.28
You save:  ብር2,275.38
Kz83,485.81
List Price:  Kz116,883.48
You save:  Kz33,397.66
CLP$95,253.47
List Price:  CLP$133,358.67
You save:  CLP$38,105.20
CN¥724.60
List Price:  CN¥1,014.47
You save:  CN¥289.87
RD$5,894.01
List Price:  RD$8,251.85
You save:  RD$2,357.84
DA13,445.45
List Price:  DA18,824.17
You save:  DA5,378.72
FJ$227.71
List Price:  FJ$318.80
You save:  FJ$91.09
Q777.29
List Price:  Q1,088.24
You save:  Q310.94
GY$20,903.54
List Price:  GY$29,265.80
You save:  GY$8,362.25
ISK kr14,104.58
List Price:  ISK kr19,746.98
You save:  ISK kr5,642.40
DH1,013.18
List Price:  DH1,418.50
You save:  DH405.31
L1,782.83
List Price:  L2,496.04
You save:  L713.20
ден5,776.11
List Price:  ден8,086.79
You save:  ден2,310.67
MOP$806.39
List Price:  MOP$1,128.98
You save:  MOP$322.58
N$1,907.39
List Price:  N$2,670.43
You save:  N$763.03
C$3,677.32
List Price:  C$5,148.40
You save:  C$1,471.07
रु13,326.11
List Price:  रु18,657.10
You save:  रु5,330.98
S/368.16
List Price:  S/515.44
You save:  S/147.28
K379.71
List Price:  K531.61
You save:  K151.90
SAR375.04
List Price:  SAR525.07
You save:  SAR150.03
ZK2,580.25
List Price:  ZK3,612.45
You save:  ZK1,032.20
L466.96
List Price:  L653.76
You save:  L186.80
Kč2,370.96
List Price:  Kč3,319.44
You save:  Kč948.48
Ft36,978.60
List Price:  Ft51,771.52
You save:  Ft14,792.91
SEK kr1,088.71
List Price:  SEK kr1,524.24
You save:  SEK kr435.53
ARS$87,217.91
List Price:  ARS$122,108.57
You save:  ARS$34,890.65
Bs692.87
List Price:  Bs970.05
You save:  Bs277.17
COP$390,680.46
List Price:  COP$546,968.27
You save:  COP$156,287.81
₡50,009.58
List Price:  ₡70,015.41
You save:  ₡20,005.83
L2,466.51
List Price:  L3,453.22
You save:  L986.70
₲740,348.57
List Price:  ₲1,036,517.61
You save:  ₲296,169.04
$U3,852.35
List Price:  $U5,393.45
You save:  $U1,541.09
zł405.43
List Price:  zł567.62
You save:  zł162.18
Already have an account? Log In

Transcript

Okay, so you may be thinking the next part is actually pretty hard. But actually, it's really, really easy. Because of the way I've we've set up a game. So remember, everything is on a flat plane, everything is that the coordinate of one zero in the y axis, and a player is actually is freezing is positioned in the white position because it never needs to move up or down, although it appeases moving around an earth around the planet. So what we need to do, we have our ground here, which has our ground and our water, we actually need to create a new object called I'm going to call this planet. Let's set its coordinates to 000.

And then let's just grab grab the ground model here and put it under the planet. And then all we need to do is we need to find the end of the planet. So right down here and we need to create a highlight here. And we're gonna create a new, 3d, new empty. I'm going to call this Trigger Zone. And we're going to add a box collider to this.

And we're gonna make it is trigger. And we're going to so right now our planet's coordinates should be at 000. Ground should be at zero, negative 0.5, and zero. And our Trigger Zone needs to be basically at the end of this planet area here. So if we just drag this forward, we can see that it's at about 100. So if we just spin this around, we'll see that Yep, that's pretty much at 100.

So if we just make this 100 should be perfectly on the edge there. And then we can make this scale. You know, five, make sure it's wide enough. Actually, let's make that 10. And let's make it five on the waxes as well. Cool.

So that definitely covers us. So when out play, it goes through this trigger, we need to do something and what we need to do is we need to create a script out to this method and then we need to add some instructions in that method. So let's let's do that. So let's go over to our script folder. let's right click Create C sharp script and we'll call this level. Jen.

Let's drag this on to the Trigger Zone. So add triggers Enter to have that level generator script the is trigger box claddagh and let's open up level 10. Okay, so inside about level generator script, we can actually just delete the void star The Void update, we don't actually need them. Okay, so the first thing we need is a on trigger enter method. So we can actually go over to our score script and just copy this one here because we've already written it out. dump it in here, void on trigger, enter.

Awesome collider other cool, we don't need this. And we don't need a The if statement in here either because we only have one thing that's going to be colliding. And then we're going to need to call a method, but the type of method that we're going to be calling is not actually an method but an enumerator. So it's the same as the method but what it lets it lets us do it's a ko routine. And what that means is what it lets us do is it lets us wait for a certain amount of time before we perform a certain action. Don't get too caught up in the terminology here because we don't we won't use them these too much.

But just know that we need to first create a ienumerator which is like a void but it's not a void. So we did that by creating ay ay numeral, we're gonna call it transfer And inside of an ienumerable, it needs to return something. And so what we need to do is we could we could write, return now, you return null, but we're not going to do that we wanted actually to wait for one second. So we're going to say, yield. Return new. wait for seconds.

And it's gonna ask us how many seconds and we just say one. Cool so now it's going to wait one second before performs the next line of code. And all we need to do to call this transfer coverage name, or our numerator is to start a ko routine. So start Kuru teen. My spelling is atrocious. And then we can just open parentheses open speech marks and right Trent transfer So that's a little bit overwhelming, I understand that it's because it's different terminology and different ways of calling things how we normally would.

But this will work just fine. And so now we're just gonna ride debug dot log, hit the Trigger Zone after one second. And let's close that out with the semicolon, copy this. let's dump it in here, just to make sure everything's working. delete that. And we can go back to unity and press play.

So press play. All right, if we go over to a console, hit the Trigger Zone, hit the Trigger Zone after one second. Awesome. So we know that this is working perfectly well so we can delete these two debug logs. And the only other thing we need to do to get the to get the level Moving forward continuously is we just need to wait for one second. And the reason we need to do that is just so we have enough time for the player to move through the trigger.

And for this part of the level to be behind the camera, so that's why we wait one second and then all we need to do is move the level forward by that certain amount. So it's actually quite easy. So I'm going to do is write game object dot transform dot parent dot position equals new vector three. And a new vector printing it's just needs to be zero, not changing the x axis zero not changing the y axis, and then game objects dot transform dot position z plus we need to have a certain amount. And we need to work out what that is. Let's just say 100 for now, but we need to actually work that out, add a semicolon in there.

So the reason we use game object dot transform dot parent dot position is because we actually need to get the position of the parent game object. So if we remember our Trigger Zone is here, but we don't need to get we don't need to move just the Trigger Zone for we need to move the parent. So we need to actually get the parent object which is this planet A. So that's the reason we use transform dot parent dot position. Cool. So now we've got a planet here.

Let's just copy this and paste it. And let's just drag this one forward. Right and two, we hit the right spot. So we can see here we've got 200. So we know the value that this needs to move forward. Because this panel is that zero, we know the value that this needs to move forward is by 200.

So let's go back into a script and let's change this to 200. And let's name this planet underscore B. And let's name this planet underscore a. And let's just press play and see what happens. Okay, so going forward, and it appears that the level just continues forever. So what's actually happening here?

So let's just have a quick look. We go to a scene manager script and we turn off object spawner. So we've got nothing in our way, and we press play, we can actually go to the player and you'll see that what's actually happening is as the player passes certain spots, it's deleting the world behind the player and sending it 200 clicks Forward, that makes sense. But from the player's perspective, the play that's actually playing the game, see our shader is stuffing up, have you there a little bit? That's okay. It just looks like the world is going on and on and on and on forever.

Because it's, it's it's lining up seamlessly. We know exactly where things lining up and the web will just continue doing this forever. Or until the phone breaks or something like that. Go back to the city manager, and we turn back on objects corner. So yeah, this is basically simple procedural level generation. But the only problem we have now is, is now if we pulls it, we have a bunch of different triangles here.

And eventually they will add up in our memory. And things will get really messy and really slow and use a lot of data. So what we want to do in the next episode is working out how we're going to clean up this the stuff that's behind the player. So see you there

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.