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 gordeszkakerek · Aug 14, 2012 at 12:06 PM · colliderplayerboxpushrigid body

Player push object with different pushPower

I have a FirstPersonController, a ,,wooden box" and a ,,heavy iron box" in the scene. Boxes have box collider and rigidbody too. Player can push this boxes. I use this script in the FirstPersonController:

// this script pushes all rigidbodies that the character touches

var pushPower = 1.5;

function OnControllerColliderHit (hit : ControllerColliderHit)

 // this script pushes all rigidbodies that the character touches

var pushPower = 1.5;

function OnControllerColliderHit (hit : ControllerColliderHit)

{

 var body : Rigidbody = hit.collider.attachedRigidbody;



 // no rigidbody

 if (body == null || body.isKinematic) { return; }



 // We dont want to push objects below us

 if (hit.moveDirection.y < -0.3) { return; }



 // Calculate push direction from move direction,

 // we only push objects to the sides never up and down

 var pushDir = Vector3 (hit.moveDirection.x, 0, hit.moveDirection.z);



 // If you know how fast your character is trying to move,

 // then you can also multiply the push velocity by that.



 // Apply the push

 body.velocity = pushDir * pushPower;

}

But how can I do this: the player push the wooden box with pushPower: 2, and the heavy iron box with pushPower 0.5 ?

Comment
Add comment · Show 1
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 drak0 · Aug 14, 2012 at 01:39 PM 0
Share

You could have 2 variables, woodPushPower, ironPushPower, and you add tags for the boxes.When you collide with something, check for the tag of the gameObject you just collided with and respond with the appropriate push power.Or you could have a default push power and subtract from it the mass of the rigidbody.

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by DESTRUKTORR · Aug 14, 2012 at 02:19 PM

You don't want to change the player's push-power. You want to change the mass on the rigidbodies. Push-power is a force exerted on the object, based on its mass. Trust me, doing that, rather than dynamically changing the push-power based on the player's position will save you a lot of time, debugging, unfixable glitches, and stress.

Just change the mass on the iron boxes' rigidbody to 5, for example, then set it to a prefab (if you plan to use it repeatedly).

[Edit] Also: When you paste code, highlight all of it, then press the code button, rather than pressing the code button first. It's a bit finicky, and so if you press enter too many times, it cuts off the code block pretty easily. I can't tell you how many people have one whole class pasted that is split up into sections of code and regular text...

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
avatar image
0

Answer by gordeszkakerek · Aug 15, 2012 at 05:56 PM

Thanks for the answers, you too Destrukorr, I was happy that your idea is easier, but if I do this, then my ironbox begin move slower, but after that moving same speed with the wooden box. I dont understand Dark0's idea, because I'm yet beginner in scriptwriteing :/,

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

9 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Detecting when Player stoped to push a rigidbody? 3 Answers

Box collider acting weird. 0 Answers

2D box colliders gap 0 Answers

Internal collisions 1 Answer

Have script detect which collider 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