• 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
Question by xercool · Sep 10, 2017 at 01:14 AM · unity 5scripting problemmovement

Special movement for game

Hi there!

I'm writing movement for my space game and spaceship object (player) with mouse cursor.

Currently have following code:

 using UnityEngine;
 using System.Collections;
 using UnityEngine.EventSystems;
 
 public class Move : MonoBehaviour {
 
     public float speed = 1.5f;
     public float rotationSpeed = 90f;
     public float rotPrecision = 0.1f;
     public float movePrecision = 0.1f;
     private Vector3 pos;
     private Quaternion qTo;
 
     void Start () {
         pos = transform.position;
         qTo = transform.rotation;
     }
 
     void Update () {
         if (!EventSystem.current.IsPointerOverGameObject())
         {
 
             if (Input.GetMouseButtonDown(0) || Input.GetMouseButton(0))
             {
                 pos = Input.mousePosition;
                 pos.z = transform.position.z - Camera.main.transform.position.z;
                 pos = Camera.main.ScreenToWorldPoint(pos);
             }
 
             var dir = pos - transform.position;
             qTo = Quaternion.LookRotation(Vector3.forward, pos - transform.position);
 
             if (Quaternion.Angle(transform.rotation, qTo) >= rotPrecision) //just set your own precision
                 transform.rotation = Quaternion.RotateTowards(transform.rotation, qTo, Time.deltaTime * rotationSpeed);
 
             if (Vector3.Distance(transform.position, pos) > movePrecision) // 0.1f
                 transform.Translate(Vector3.up * speed * Time.deltaTime);
         }
     }    
 
 }

But there i have the problem with the movement precision and rotation when the point is too close to player (have infinite loop).

The idea of this movement system described with the following image:

(Player actor is green, path is gray, and destination point is red).

Movement plan

Unity has a great community and I hope that you could help me w/ that.

Thank you!

movement.png (13.0 kB)
Comment

People who like this

0 Show 0
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

  • Sort: 
avatar image

Answer by Cuttlas-U · Sep 10, 2017 at 07:26 AM

hi; u have a "rotationSpeed" value; if u increase this value this problem will be solved cause the space ship rotate too fast and it wont stuck in an infinite loop; but that does not look good when space ship is far from the red point ;

so the idea here can be to get the distance between the player and the red point and multiply the rotaition of the space ship based on that distance;

      float t = Vector3.Distance(Playerpos, Redpoin);
 

   transform.rotation = Quaternion.RotateTowards(transform.rotation, qTo, Time.deltaTime * rotationSpeed / t);

so with the code above "t" is the distance between them and if its a big number the rotaition will be so low but if its a small number rotation will be faster; i wrote this to give u an idead but u have to play with the values to find a good value for the space ship rotation;

Comment
xercool

People who like this

1 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 xercool · Sep 10, 2017 at 09:32 AM 0
Share

Still have problem because the spaceship is in infinite loop when the point under one. Well that is not the solution.

As i see the problem it has too long radius that's cause it can't meet the destintion point there.

Unity Answers is in Read-Only mode

Unity Answers content will be migrated to a new Community platform and we are aiming to launch a public beta by June 9. Please note, Unity Answers is now in read-only so we can prepare for the final data migration.

For more information and updates, please read our full announcement thread in the Unity Forum.

Follow this Question

Answers Answers and Comments

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

how to instantiate a prefabs that move upward on update function and get the transform position of that moving prefab 0 Answers

My movement script is not moving my 2D object 2 Answers

Stop Moving while Character Attacking 0 Answers

How to stop movement script on void start and resume after. 0 Answers

facing issue in GameControl.cs of FlappyBird (Unity Tutorials) 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