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 SrBilyon · Jan 30, 2011 at 06:11 AM · collisionlayerstagswall

Limiting Wall Jump to only certain Object Collisions

So, I am using the wall jump function fromthe Lerpz tutorial for my new player controller script, however, the one from the lerpz tutorial allows walljumping on anything you collide with to the side. I want to limit the wall jumping to ony certian onbject only. From what I can see, this is what allows that:

// Store when we first touched a wall during this jump
if (collisionFlags == CollisionFlags.CollidedSides)
{
    touchWallJumpTime = Time.time;
}

I want to only allow walljumping on objects in a particular layer (or tag) only so that the player can't walljump on any object. Here is the complete function:

function ApplyWallJump () { // We must actually jump against a wall for this to work if (!jumping) return;

     //if (!letGo)
     //  return;

     // Store when we first touched a wall during this jump
     if (collisionFlags == CollisionFlags.CollidedSides)
     {
         touchWallJumpTime = Time.time;
     }

     // The user can trigger a wall jump by hitting the button shortly before or shortly after hitting the wall the first time.
     var mayJump = lastJumpButtonTime > touchWallJumpTime - wallJumpTimeout && lastJumpButtonTime < touchWallJumpTime + wallJumpTimeout;
     if (!mayJump)
         return;

     // Prevent jumping too fast after each other
     if (lastJumpTime + jumpRepeatTime > Time.time)
         return;


     if (Mathf.Abs(wallJumpContactNormal.y) < 0.2)
     {
         wallJumpContactNormal.y = 0;
         moveDirection = wallJumpContactNormal.normalized;

         // Wall jump gives us at least trotspeed
         moveSpeed = Mathf.Clamp(moveSpeed * 1.5, trotSpeed, runSpeed);
     }
     else
     {
         moveSpeed = 0;
     }

     verticalSpeed = CalculateJumpVerticalSpeed (jumpHeight);
     DidJump();
     SendMessage("DidWallJump", null, SendMessageOptions.DontRequireReceiver);
     Debug.Log("Stupid Wall!");
 }

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
1
Best Answer

Answer by Jason B · Jan 31, 2011 at 08:58 PM

Okeydokey. Was that the question? :D What seems to be the problem? Your script looks good. Only thing it's lacking is a simple check to allow that whole chunk of wall jump code to take place.

void OnCollisionEnter(Collision other)
{
 if (other.gameObject.tag = "AWallJumpableWall")
     {
      // Do wall jumpy things!
     }
}

Straight from the manual, just slightly modified.

Comment
Add comment · Show 2 · 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 SrBilyon · Jan 31, 2011 at 09:34 PM 0
Share

LOL, thanks, I'll try it out once I get home on my work computer! Yeah, I don't think I completely put my question in "question form"!

avatar image Jason B · Feb 01, 2011 at 01:36 AM 0
Share

Coolies. Glad to help.

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

No one has followed this question yet.

Related Questions

Why is my AI not thinking the collisions fast enough? 1 Answer

making bullets disappear when they collide 3 Answers

Performance: How expensive are Trigger Collisions? How many collision layers should be used? 1 Answer

[RESOLVED] Pressing the "Z" key to make him go through certain terrain objects? 1 Answer

How to setup a local multiplayer game? 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