• 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 Michael.H · Oct 27, 2013 at 04:15 PM · transform.position

Teleporting object into a random distance from player.

Im making a game where enemy follows you. Im trying to make it that when you get out of range he will teleport into a random distance between 5-15 meters behind player. How would i be able to do this?

Comment
Add comment · Show 1
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 fafase · Oct 27, 2013 at 06:12 PM 1
Share

Are you in 2D/3D and is your terrain flat or with reliefs?

2 Replies

· Add your reply
  • Sort: 
avatar image
1

Answer by fafase · Oct 27, 2013 at 06:40 PM

Ok, Let's consider you are 3d and your terrain is not flat. If it is not the case you just need to remove some parts of what is coming up:

 public Transform player;

 void ResetPosition(){
     Vector3 position = player.position;
     float distance = Random.Range(10.0f,30.0f);
     Vector3 objPosition = position - player.forward* distance;
     RaycastHit hit;
     Vector3 startHit = objPosition;
     startHit.y += 200;
     Physics.Raycast(startHit, Vector3.down, out hit);
     objPosition.y = hit.point.y + 0.5f;
     transform.position = objPosition;
 }

First, we get the player position, second we get that random value to define where it should come up. We use the minus forward of the player (back) and multiply that by the distance, we get a point far behind. Now if the terrain is not flat, there is a chance the guy is below ground and will fall for eternity into limbo. Does it deserve it?

So we use that position and make it 200 higher (this value may vary depending on your terrain), then we raycast from that high position and see where the hit happens. We use the y value + 0.5f (half of your guy, may vary) and pass that final value to our position.

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 Michael.H · Oct 28, 2013 at 06:24 AM 0
Share

Thanks a lot! Props on you sir!

avatar image
0

Answer by Sundar · Oct 27, 2013 at 04:57 PM

Try this

 vector3 pos = enemy.transform.position;

 pos.x = UnityEngine.Random.range( 5.0f, 15.0f );

 enemy.transform.position = pos;
Comment
Add comment · Show 2 · 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 Michael.H · Oct 27, 2013 at 05:38 PM 0
Share

It wont do anything. Even though im farther than 10. Here is my code:

 if(distance > 10){
                 
                     Vector3 pos = enemy.transform.position;
  
                     pos.x = UnityEngine.Random.Range(10,30);
  
                     enemy.transform.position = pos;
                     
             }
avatar image Michael.H · Oct 27, 2013 at 06:05 PM 0
Share

It only teleports it into x 10-30.

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

16 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

Related Questions

How do I make and object's position and rotation independent again? 1 Answer

Child Object Left Behind when Parent Moves at Start of Scene 1 Answer

Trying to position a world space menu in front of the camera whilst ignoring the camera's tilt angle 1 Answer

Instantiate object at specific distance from transform position? 1 Answer

How do I move my object smoothly using mouse,How do I make the object movement smooth ? 2 Answers


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