Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by niraj · Jul 26, 2014 at 03:38 PM · infinite terrain

Creating Infinite Run using Application.LoadLevelAsync

Hello Developers,

I would like to create infinite Run game where new Terrain will continue to generate in front. I want to go with Application.LoadLevelAsync function of Unity. Is this possible to achieve using Application.LoadLevelAsync operation?

Say i have 3 levels:

  • Level 1

  • Level 2

  • Level 3

I want o repeat these levels as player first person player continue to move forward. Please help how can i achieve this using Application.LoadLevelAsync operation if possible. I want to keep first person continue to run.

Thanks and Regards Niraj Vishwakarma

Comment
Add comment · Show 3
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Landern · Jul 26, 2014 at 04:06 PM 1
Share

Yes it possible, but you're using the wrong method, you want LoadLevelAdditiveAsync, otherwise with LoadLevelAsync once active, the previous level's junk(with the exception of what was marked as do not destory) will be destroyed. The first thing you can do for yourself and lookup the documentation

avatar image niraj · Jul 26, 2014 at 05:32 PM 0
Share

Actually there is no clear documentation. As far as i understand the levels get added continuously but not destroyed once the player crossed the level 1. Actually i am developing this for mobile and if levels are adding without destroying the last level i think it will require more CPU overhead. Am i correct here or something else?

avatar image Landern · Jul 26, 2014 at 05:44 PM 0
Share

I find the documentation clear, but that is just me, if by clear you mean they need more examples that would help your particular situation... meh?

For performance your best bet is to create a system where you don't need to load levels on the fly during play, that the platforms your player is running under are what move and your player doesn't move forward(though the appearance is there). You create a pooling system for your different models, the object you create and code(scripts) should be generic enough to apply to most objects and have properties/fields that allow placement on the field within ranges so you can randomize between.

With a system like that in place you load up everything during the start of the game. If your game is heavy, make natural "resting" points in the game where you can switch out the next set of objects that represent a change in location/level/whatever.

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by KMKxJOEY1 · Jul 26, 2014 at 05:13 PM

Instead of loading an entire level, take a look at the Instantiate method where you can spawn a prefab in instead of an entire level

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image niraj · Jul 26, 2014 at 05:29 PM 0
Share

Yes this is True and i am doing the same. Now the problem i am facing that i have to create Trees in front of camera visible area. How can i achieve this, I have Tree prefab and would like to generate in front of visible camera area. I just want to generate Random but unique vector positions in front of camera area say within 200 $$anonymous$$eters?

avatar image
0

Answer by viju · Aug 22, 2016 at 12:38 PM

An alternate way of doing it is to create a long 'Plane' 3D object (Scale: X= 50, Y=1, Z=500; Position: 0, Rotation: 0). Let us call it 'Ground'. Create a green material and apply it to the plane to give it a green landscape look.

Create another plane in the middle (Scale: X=1, Y=1, Z=500; Position: X=0, Y=0.2, Z=0, Rotation: 0). Let us call it 'Path'. Create a dark-grey material and apply it to the path.

Move the Main Camera (Position: X=0, Y=10, Z=-1809; Rotation: X=20, Y=0, Z=0).

Place a capsule 3D object on the path (Position: X=0, Y=1.5, Z=-1800) and make the Main Camera as the child of the capsule object.

Add three random objects on the path: Cube (Position: X=-3, Y=1.5, Z=-800), Sphere (Position: X=-4, Y=1.5, Z=-1700) and Cylinder (Position: X=3, Y=1.5, Z=-1300)

Add a RigidBody component to the capsule (Check 'Use Gravity' and under 'Constraints > Freeze Rotation', check X, Y, Z).

Finally, add the following C# code to the capsule object.

  using UnityEngine;
  using System.Collections;
  
  public class PlayerBehaviour : MonoBehaviour
  {
      // Update is called once per frame
      void FixedUpdate()
      {
          transform.Translate(Vector3.forward * 0.75f);
          if (Input.GetKey(KeyCode.LeftArrow))
              transform.Translate(Vector3.left * 0.25f);
          if (Input.GetKey(KeyCode.RightArrow))
              transform.Translate(Vector3.right * 0.25f);
          if (Input.GetKey(KeyCode.UpArrow))
              transform.Translate(Vector3.up * 0.25f);
          if (transform.position.z > -700f)
          {
              transform.position = new Vector3(transform.position.x, transform.position.y, -2000f);
          }
      }
  }

We can place a lot of random objects on the 'Ground' and 'Path' and Randomize the environment when transform.position.z > -700f to get a better infinite feel. No need to create new terrain in this case. Just randomize the environment.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

25 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Infinite Range, Smooth, Day-Night Cycle 3 Answers

Why does my character fall through the floor after I've moved it? 0 Answers

Making infinite terrain 3 Answers

Intantiated objects deleting themselves automatically. 1 Answer

Generating Structures on Infinite Terrain 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges