Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 /
  • Help Room /
avatar image
0
Question by bluefake · Sep 23, 2018 at 04:13 PM · movementphysicsbuggrid based game

moving in a grid (2D)

i made a script that makes player moving in a grid (like in the old pokemon games)...

the problem i have is that if i run against a wall the player trys to go into the position in the wall and get stuck...

 void Start()
 {
     pos = transform.position;
     tr = transform;
 }

 void Update()
 {

     if (Input.GetKey(KeyCode.D) && tr.position == pos)
     {
         pos += Vector3.right;
     }
     else if (Input.GetKey(KeyCode.A) && tr.position == pos)
     {
         pos += Vector3.left;
     }
     else if (Input.GetKey(KeyCode.W) && tr.position == pos)
     {
         pos += Vector3.up;
     }
     else if (Input.GetKey(KeyCode.S) && tr.position == pos)
     {
         pos += Vector3.down;
     }

     transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);
 }

i tried to fix that bug, but all i tried failed and unity crashes everytime:

 void Start()
 {
     public float speed = 2.0f;
     Vector3 pos;
     Transform tr;
     public double time = 1000;
     public int i = 0;
     time = time * 1000000000;
     pos = transform.position;
     tr = transform;
     time = time * Time.deltaTime;
 }

 void Update()
 {
     if (Input.GetKey(KeyCode.D) && tr.position == pos)
     {
         while (i < time)
         {
             i++;
             pos += Vector3.right;
             transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);
         }
     }
     else if (Input.GetKey(KeyCode.A) && tr.position == pos)
     {
         while (i < time)
         {
             i++;
             pos += Vector3.left;
             transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);
         }
     }
     else if (Input.GetKey(KeyCode.W) && tr.position == pos)
     {
         while (i < time)
         {
             i++;
             pos += Vector3.up;
             transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);
         }
     }
     else if (Input.GetKey(KeyCode.S) && tr.position == pos)
     {
         while (i < time)
         {
             i++;
             pos += Vector3.down;
             transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);
         }
     }
     i = 0;
 }
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 eses · Sep 23, 2018 at 04:23 PM

Hi @bluefake

Note, I didn't read your code too much, but I think I see what you are doing.

If you want to make movement work with MoveTowards or any other movement method so that you don't end up inside other objects, you'll have to first do a check in direction you try to move. Otherwise you are just blindly moving in directions that might have walls... which makes no sense.

See: https://unity3d.com/learn/tutorials/projects/2d-roguelike-tutorial/moving-object-script?playlist=17150

If your game is tile based, also then consider changing the whole collision checking to be driven by data, check your collision from array of tiles instead - this could be just 0s and 1s describing walkable and non walkable positions of level.

The while loop thing in second code listing doesn't make any sense.

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

254 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 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 a surface move a player forward? 1 Answer

Problem with the Character Controller on the Y-Axis,Character Controller drifting in the Y Axis 0 Answers

Unity2D Help with rigidbody character movement. 0 Answers

When putting up the friction it doesn't change anything. 0 Answers

Player (RigidBody) jitters when colliding with object and jumping. 0 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