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 Padges · Sep 08, 2010 at 06:14 PM · collisioncharacterfallingobstacle

Falling through platforms

I have a terrain which I can walk on, and I have a few boxes around and platforms to test my |FPS characters motion skills. When I run into a box or platform from the side, I collide with it, like I should, but when I jump ontop of the box or platform, i immediately teleport back to the ground. Any ideas on how to fix this? Here is the motion portion of my controller.

function FixedUpdate() { if (grounded) { // We are grounded, so recalculate movedirection directly from axes. moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); moveDirection = transform.TransformDirection(moveDirection);

     //left shift changes speed to sprintspeed.

if (Input.GetButton ("left shift")) { moveDirection = sprintspeed; } //left control changes speed to crouchspeed and modifies scale and position to a smaller size to crouch. else if (Input.GetButton ("left ctrl")) { moveDirection = crouchspeed; gameObject.transform.localScale.y -= .5; gameObject.transform.position.y = .5; }

else

{ //if anything else, speed is normal speed and make scale and position standing moveDirection *= speed; gameObject.transform.localScale.y = 1; gameObject.transform.position.y = 1; } //if jump is pressed, jump. if (Input.GetButton ("Jump")) { moveDirection.y = jumpSpeed; }

}

Comment
Add comment · Show 2
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 skovacs1 · Sep 10, 2010 at 10:35 PM 0
Share

This script doesn't give enough detail on the problem - something else is happening that is not included here. When you jump, you set the moveDirection.y = jumpSpeed, but do you not change gounded? I can only imagine something is setting grounded when you don't want it to or you are setting the position to something which you don't want. When you are grounded and not holding shift, the object's transform.position.y is set to 1 or .5 in s$$anonymous$$d of the top of your box or whatever so either you're not grounded or you shouldn't set your position this way.

avatar image superventure · Nov 05, 2011 at 08:58 PM 0
Share

How do you have the triggers set up on your platform's colliders? There needs to be two, on set to trigger, and one not set to trigger so the player can actually 'stand' on the platform. I do this by putting a box collider on the platform itself and setting that to trigger, then I put a box gameobject inside of the platform as child that is not set to trigger for the player to step on. the child box object needs to smaller than the plaform's trigger box, so the player can touch the platform and be grounded on it.

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Fabkins · Nov 06, 2011 at 01:25 AM

"gameObject.transform.position.y = 1;"

This line and the corresponding crouch will constantly reset the players Y position. So you could jump, which tells the motion controller to start incrementing the Y but you keep reseting the Y co-ordinate of the player. I would expect your player to have issues with anything that isnt a flat surface.

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

2 People are following this question.

avatar image avatar image

Related Questions

Collision and character controllers 0 Answers

No slipping off edges with Character Controller 0 Answers

Make Character Controller a Box? 2 Answers

Player falls through fast moving platform 1 Answer

Character Collision Issue 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