• 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 /
  • Help Room /
avatar image
0
Question by joehutchings10 · Jul 14, 2016 at 04:37 AM · c#animationmovementtransformvector3

Moving GameObject a specific distance in the Z direction and back again - regardless of rotation

Hello -

I am a beginner and working on my first 3D game.

I need to be able to programmatically move a GameObject in its forward direction a certain distance, determine when it reaches that distance, and then return it back to its starting point.

I can make this work using Vector3.MoveTowards and Transform.Forward - the problem I face is that the GameObject could be at a different rotation everytime the game is played as it is dynamically created in the environment based on where a user taps.

So I need to move forward the direction it is facing at runtime and back again regardless of rotation.

I am using C#

I appreciate any help!

Comment
Add comment
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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by DLively · Jul 14, 2016 at 05:17 AM

Your looking for transform.translate(Vector3.Forward,space.World);

https://docs.unity3d.com/ScriptReference/Transform.Translate.html

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 joehutchings10 · Jul 14, 2016 at 11:50 AM 0
Share

DLively - Thank you for the help! It seems I can get my object to move in the correct right direction every time using this logic. However, the problem I face is determining when I have traveled the preset distance of 1f in Z. Here's the code I am using now to move it and determine if I've reached the distance I need to. It doesn't seem to work correctly as sometimes it will overshoot the distance or sometimes not go far enough depending on the rotation in Y of the game object. Am I calculating the distance traveled wrong once it starts moving?

 startingPoint = new Vector3(transform.position.x, transform.position.y, transform.position.z);
 zDistance = 1f;
 comeback = false
 
 void Update ()
 {
 if(!comeback)
 {
 Debug.Log("I'm moving forward");
 lastPos = transform.position;
 distance = lastPos - startingPoint;
 zDistanceTraveled = $$anonymous$$athf.Abs(distance.z);
 Debug.Log("Total Distance I $$anonymous$$ust Go:" + zDistance);
 Debug.Log("Distance I've Traveled:" + zDistanceTraveled);
                 
  if (zDistanceTraveled >= zDistance)
 {
 comeback = true;
 }
 else
 transform.position += transform.forward * Time.deltaTime * speed;
 }
 }

 




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

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

221 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 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 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 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 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 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 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 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 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

Turn Based Movement - Using Movement Points 0 Answers

I got Some Error about how to Transform Postiton Enemy where one point can spawn 2 enemies. 1 Answer

How do I animate child object to move into horizontal layout group. 0 Answers

Stupid question but I have to figure out 0 Answers

Setting another script's property from code doesn't actually set the property 1 Answer

  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges