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 Jammer3000 · Dec 19, 2013 at 04:01 PM · 2drigidbody

How to convert to 2D

The script below is one for a 3d Object but I need its functionality, but I'm having trouble converting it so that I can use it in Unity's new 2d platform with the 2d colliders and rigidbodies this script is made for the default rigid bodies and colliders? Can anyone help!

  var normalCollisionCount = 1;
 var moveLimit = .5;
 var collisionMoveFactor = .01;
 var addHeightWhenClicked = 0.0;
 var freezeRotationOnDrag = true;
 var cam : Camera;
 private var myRigidbody : Rigidbody;
 private var myTransform : Transform;
 private var canMove = false;
 private var yPos : float;
 private var gravitySetting : boolean;
 private var freezeRotationSetting : boolean;
 private var sqrMoveLimit : float;
 private var collisionCount = 0;
 private var camTransform : Transform;
  
 function Start () {
     myRigidbody = rigidbody;
     myTransform = transform;
     if (!cam) {
         cam = Camera.main;
     }
     if (!cam) {
         Debug.LogError("Can't find camera tagged MainCamera");
         return;
     }
     camTransform = cam.transform;
     sqrMoveLimit = moveLimit * moveLimit;    // Since we're using sqrMagnitude, which is faster than magnitude
 }
  
 function OnMouseDown () {
     canMove = true;
     myTransform.Translate(Vector3.up*addHeightWhenClicked);
     gravitySetting = myRigidbody.useGravity;
     freezeRotationSetting = myRigidbody.freezeRotation;
     myRigidbody.useGravity = false;
     myRigidbody.freezeRotation = freezeRotationOnDrag;
     yPos = myTransform.position.y;
 }
  
 function OnMouseUp () {
     canMove = false;
     myRigidbody.useGravity = gravitySetting;
     myRigidbody.freezeRotation = freezeRotationSetting;
     if (!myRigidbody.useGravity) {
         myTransform.position.y = yPos-addHeightWhenClicked;
     }
 }
  
 function OnCollisionEnter () {
     collisionCount++;
 }
  
 function OnCollisionExit () {
     collisionCount--;
 }
  
 function FixedUpdate () {
     if (!canMove) return;
  
     myRigidbody.velocity = Vector3.zero;
     myRigidbody.angularVelocity = Vector3.zero;
     myTransform.position.y = yPos;
     var mousePos = Input.mousePosition;
     var move = cam.ScreenToWorldPoint(Vector3(mousePos.x, mousePos.y, camTransform.position.y - myTransform.position.y)) - myTransform.position;
     move.y = 0.0;
     if (collisionCount > normalCollisionCount) {
         move = move.normalized*collisionMoveFactor;
     }
     else if (move.sqrMagnitude > sqrMoveLimit) {
         move = move.normalized*moveLimit;
     }
  
     myRigidbody.MovePosition(myRigidbody.position + move);
 }
  
 @script RequireComponent(Rigidbody)
Comment
Add comment · Show 3
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 Jammer3000 · Dec 19, 2013 at 04:15 PM 0
Share

Okay so what I did is create an empty gameObject and then attached the required rigid body and collider to the empty gameObject and put my 2d object with the 2d collider and rigid body and it works but it brings the game object to the camera and just stays there it can still move left and right which is what I want but I don't want it to get pulled to the camera? can anyone help?

avatar image Spinnernicholas · Dec 19, 2013 at 04:37 PM 0
Share

Is the whole point of the script to allow you to drag objects?

avatar image Jammer3000 · Dec 19, 2013 at 07:46 PM 0
Share

Yes sir it's so that when I click on the object that the script is attached to it moves that object to wherever you the move the mouse and only left and right.

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Spinnernicholas · Dec 19, 2013 at 07:57 PM

To make it 2d, you have to replace the rigidbody and the collider(s) with their 2d counterparts.

  • Rigidbody2D

  • Collider2D

  • Change 3D Vectors used in physics to 2D Voctors

  • There is no RigidBody2D.useGravity, use Rigidbody2D.gravityScale.

  • There is no RigidBody2D.freezeRotation, you might be able to set Rigidbody2D.angularDrag to float.Infinity(depends on Unity's Box2D Implementation).

I haven't dived into the camera issue yet, but I'll get back when I can.

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

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

Related Questions

How can I make a character bounce? 1 Answer

The name 'Joystick' does not denote a valid type ('not found') 2 Answers

Continuously moving rigidbody 2 Answers

How to activate GUI button only if somethings true? 1 Answer

2D Player Movement 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