c# - Prevent player from goes through the wall -


i want ask question. first of all, can detect player while player hit wall, not make player not goes through wall. how make player stop moving while player hit wall?

here screenshot (red capsule player):

enter image description here

the first image capsule collided brown wall imported object 3ds max , applied collider ticking check box shown on above image.

here code using:

using unityengine; using system.collections;  [requirecomponent(typeof(charactercontroller))]  public class checkplayer : monobehaviour  {     public float movespeed = 5.0f, rotationspeed = 5.0f; // define , set movement , rotation of player      private void update()     {         // call movement , rotation function          movement();          rotation();     }      private void ontriggerenter(collider col)     {         // if game object collided tag         if (col.gameobject.tag == "inn's objects")         {             // debug             debug.log("you have collided object");         }          // if game object colided tag         if (col.gameobject.tag == "inn's door")         {             // load level             gamemanager.loadlevel("third loading scene");         }     }      private void movement()     {         // if user press w on keyboard         if (input.getkey(keycode.w))         {             // move player forward             transform.position -= vector3.forward * movespeed * time.deltatime;         }          // if user press on keyboard         else if (input.getkey(keycode.a))         {             // move player right             transform.position += vector3.right * movespeed * time.deltatime;         }          // if user press s on keyboard         else if (input.getkey(keycode.s))         {             // move player backward             transform.position += vector3.forward * movespeed * time.deltatime;         }          // if user press d on keyboard         else if (input.getkey(keycode.d))         {             // move player left             transform.position -= vector3.right * movespeed * time.deltatime;         }     }      private void rotation()     {         // if user press e on keyboard         if (input.getkey(keycode.e))         {             // rotate player right             transform.rotate(-vector3.up * rotationspeed * time.deltatime);         }          // if user press q on keyboard         else if (input.getkey(keycode.q))         {             // rotate player left             transform.rotate(vector3.up * rotationspeed * time.deltatime);         }     } } 

any appreciated!

thank you

why using triggers walls? walls meant have colliison, use colliison mesh.

on side note, can log position of player @ point of collision, set movement-speed zero, reset position.


Comments

Popular posts from this blog

matlab - "Contour not rendered for non-finite ZData" -

delphi - Indy UDP Read Contents of Adata -

qt - How to embed QML toolbar and menubar into QMainWindow -