Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 /
avatar image
0
Question by MKayJay · Oct 13, 2013 at 04:13 PM · physicsunderwaterconstantforceswimming

Underwater Swimming issues (Gravity and ConstantForce)

So I am trying to make some underwater swimming and I've had a lot of issues. I've managed to fix some and work around others, but three things still eludes me.

The most important one is swimming up and down. I found a tutorial online that used ConstantForce to move the player up and down. There are a few issues with this though. When I dive (move downwards) I pass through the terrain, which I normally don't when I walk around normally. The code I use for this movement is the following c# code which runs in my Update method:

 if(isUnderWater && Input.GetButton("Jump"))
             constantForce.relativeForce = new Vector3( 0, 200, 0);
         else if(isUnderWater && Input.GetButton("Crouch"))
             constantForce.relativeForce = new Vector3( 0, -200, 0);
         else
             constantForce.relativeForce = new Vector3( 0, 0, 0);

Is there a better way to do this, or a solution to my collision issue? This method feels rather unnatural because gravity for some reason is ignored after I press the jump (or crouch) button once, even though the gravity value in the Character Motor is above zero.

If required (I don't think so though) here's the changes that are made when I go into the water:

 private void SetUnderWater()
     {
         // render new fog with blue color  
         RenderSettings.fog = true;  
         RenderSettings.fogColor = new Color(0, 0.4f, 0.7f, 0.6f);  
         RenderSettings.fogDensity = 0.08f;  
         RenderSettings.fogStartDistance = 0.0f;
         
         foreach(Transform child in transform)
             if(child.gameObject.tag == "MainCamera")
                 child.camera.backgroundColor = new Color(0, 0.4f, 0.7f, 1); 
         light.intensity = 0f;
     
         chMotor.movement.gravity = 2;
         chMotor.movement.maxFallSpeed = 3;
         chMotor.movement.maxForwardSpeed = 3;
         chMotor.movement.maxSidewaysSpeed = 3;
         chMotor.movement.maxBackwardsSpeed = 3;
         chMotor.jumping.enabled = false;
     
         isUnderWater = true;
     }

So to sum it up:

  • How do I avoid diving through my terrain, or should I use a different approach to swimming?

  • If I stick to this method, how would I get the gravity to work (Or something else that adds some realism to the underwater movement)?

Thanks a lot for reading.

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

0 Replies

· Add your reply
  • Sort: 

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

15 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

Related Questions

Best solution to make/fake water flow between rooms? 1 Answer

Swimming around Underwater? (Not Image effects) 1 Answer

2D 360 degress platformer example needed 0 Answers

Constant Force doesn't work 0 Answers

Object w/ constant force can't move on top of other objects 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