Unity Tutorial : Drag Gameobject with Mouse

Поділитися
Вставка
  • Опубліковано 2 лют 2025

КОМЕНТАРІ • 243

  • @porkyz1
    @porkyz1 5 років тому +87

    For those having issues make sure your camera for the scene is tagged as being "main camera", not as "untagged", the option for this is just under the name for the camera in the inspector panel.

    • @kiyano123
      @kiyano123 5 років тому +2

      thanks!!!

    • @QQrest
      @QQrest 3 роки тому

      Thanks so Much!

    • @allfather_kree
      @allfather_kree 3 роки тому

      Thanks. It works but I am not sure why

  • @garethdenyer21
    @garethdenyer21 4 роки тому +5

    This is exceptional. Clear, fast, clean and massively useful. I'm now prompted to look at a lot more by the author.

  • @sandiechambers5540
    @sandiechambers5540 3 роки тому

    Omg, You star, you managed to solve my problem, thank you a million times over.!!

  • @VictorAlmeidaTroo
    @VictorAlmeidaTroo 4 роки тому +1

    Just a little adaptation to fulfill my implementation and its working like a charm. Thanks a lot!!

  • @GBart
    @GBart 2 роки тому +1

    Thanks for this, this was super clear and easy to follow!

  • @AidanDemps
    @AidanDemps 4 роки тому +8

    how to fix the objects clipping through the ground? while you are dragging it

  • @greatpinkwish
    @greatpinkwish Рік тому

    really cool! many thanks!

    • @JayAnAm
      @JayAnAm  Рік тому

      Glad you liked it!

  • @rodneyapplebyphd
    @rodneyapplebyphd 4 роки тому +1

    Great explanation, quick and simple to implement.

  • @qweasdy-pc6ql
    @qweasdy-pc6ql 2 роки тому

    Quick & easy to understand. Thank you very much.

  • @yechan_naesarang
    @yechan_naesarang 2 роки тому

    OMG I finally found something that works! Thank you!

  • @ValuFran
    @ValuFran 3 роки тому

    Thank you very much! I spent many hours tryng to do this but it didn't work, but this video did!! I'm very happy!

  • @Waarriorgaming24
    @Waarriorgaming24 4 роки тому

    Thanks For Help
    But I want to know How to move 3D object by touch dragging Finger By the screen means our object should follow our finger dirction

  • @joshuadrewlow
    @joshuadrewlow 2 роки тому

    Simple and working amazing still in 2022 :)

  • @Edrenn-live
    @Edrenn-live 3 роки тому

    Very nice and clear tutorial ! Thanks !

  • @NevilleMICALLEF
    @NevilleMICALLEF 3 роки тому +4

    Well done! It helped me to understand the concept in practice were now I can tailor it for my requirements. Thanks

  • @unityfuchs6610
    @unityfuchs6610 5 років тому +3

    Thank you for the tutorial, but there is a small mistake in your script.
    If you pick your object up and let it loose, it lands correctly, in the same spot where you have picked it up, if your camera is NOT rotated, only. If you rotate your camera downwards, the script will do its job as it should but with the rigidbody attached, the object will fall straight down to the ground + the "rotationOffset" of the camera.
    For example: Your camera rotation is (20, 0, 0), your objectsPosition is (-10, 1, 0). You lift it up to "y = 9" and let go. You should notice, that the new coordninate is something like (-10.6, 9, 2.9) and not (-10, 1, 0), because it adds the rotation of the camera to it.
    The same problem occurs for cameraRotations in y and z.

  • @AidenWolf97
    @AidenWolf97 4 роки тому

    PERFECT NOW I CAN MAKE AN amnesia like door!

  • @joeaugustine4172
    @joeaugustine4172 2 роки тому

    Fantastic tutorial!!!

  • @omar-0082
    @omar-0082 Рік тому

    THANK YOU, you are amazing

  • @utkarshpanchal400
    @utkarshpanchal400 3 роки тому

    Thanks buddy really really Appricaiated

  • @slmjkdbtl
    @slmjkdbtl 4 роки тому +5

    with this method, the calculated world position will have a fixed z value and the object will only move along x/y axis cuz you're using the clip space z value of the object to construct the vec3, but is there a way to make it have a fixed y value and the object move along x/z axis?

    • @jn1703
      @jn1703 4 роки тому

      I'd also very much like to know this

    • @slmjkdbtl
      @slmjkdbtl 4 роки тому

      ​@@jn1703 I solved by creating a plane and calculate the intersection between the play and the ray casted to the mouse position. E.g. if you want to use mouse to place an object on the ground, you can create a plane of normal vec3(0, 1, 0), then cast a ray from eye position to mouse, the intersection point would be the position of the object

    • @jn1703
      @jn1703 4 роки тому

      @@slmjkdbtl Thanks for your response but not sure I'm following, I have my camera rotated at 45 degrees and just want to move the object on these axis. How can I get the correct mouse offset to work with my objects current postiion?

  • @jakubmajewski9080
    @jakubmajewski9080 4 роки тому +4

    i like it but the velocity keeps going up as the object is in the air, any way to make the velocity more realistic? everything goes through the ground

    • @createria2
      @createria2 4 роки тому

      add more gravity

    • @createria2
      @createria2 4 роки тому

      go to edit: project settings and add a (-0) value or a lower walue (+) means less (-) means

    • @DeezNuts-hy7qn
      @DeezNuts-hy7qn 3 роки тому +2

      @@createria2 that'll slow down the gravity of the entire game i suggest turning off Use Gravity in your draggable objects rigidbody when Mouse is down and turning it back one with the mouse button is up
      Good luck! @Jakub Majewski

    • @acompletelynormalrobloxgam7383
      @acompletelynormalrobloxgam7383 3 роки тому

      @@DeezNuts-hy7qn Thanks!! Really helped me!

    • @DeezNuts-hy7qn
      @DeezNuts-hy7qn 3 роки тому

      @@acompletelynormalrobloxgam7383 no problem

  • @thepotatogaming2340
    @thepotatogaming2340 4 роки тому

    Best tutorial ever

  • @MaruskaStarshaya
    @MaruskaStarshaya 3 роки тому

    Works as magic, thank you!

  • @sevenoel
    @sevenoel 5 років тому +9

    Object can be dragged thru other objects floor etc, How 2 fix?

    • @zedgamedev
      @zedgamedev 5 років тому

      Also looking for a fix

    • @TheDynamicDudes
      @TheDynamicDudes 4 роки тому

      u find a fix yet?

    • @mariocamspam72
      @mariocamspam72 4 роки тому

      @@TheDynamicDudes Add a 2D collider to the cube and floor, etc... and add a ground/collision check. Check out brackey's tutorial on that.

    • @ryana.9821
      @ryana.9821 4 роки тому

      need to incorporate collider components
      and onCollision events

    • @mariocamspam72
      @mariocamspam72 4 роки тому

      @@ryana.9821 incorporate is a cooking word

  • @deangreasley8168
    @deangreasley8168 6 років тому +1

    excellent tutorial, thanks for this !

    • @JayAnAm
      @JayAnAm  6 років тому

      Thx, you're welcome

  • @shauryakumar306
    @shauryakumar306 3 роки тому

    Thanks a lot. Helped me a lot.

  • @AstonArchitecture
    @AstonArchitecture 3 роки тому +7

    If anyone wants to stop movement along a particular axis, the easy way is to go into the rigidbody component of the object you're moving/dragging, and under constraints, "Freeze" the axis you don't want to use. :D

  • @cydoyk
    @cydoyk 4 роки тому

    Thank You!, I've been using this to make my fps game, at first i thought it was very hard to do, but then i realized just how easy it is only a few lines of code. Thank You!

  • @QQrest
    @QQrest 3 роки тому

    Thanks! You really Helped Me For My Game!

    • @JayAnAm
      @JayAnAm  3 роки тому

      Glad I could help!

    • @QQrest
      @QQrest 3 роки тому

      @@JayAnAm :)

  • @esotericsean
    @esotericsean 6 років тому +1

    Nice! I want to be able to pick up an object and have it "snap" to the center (position and rotation) so I can carry it around and drop it somewhere else in a first person game. What's the best way to do that?

    • @JayAnAm
      @JayAnAm  6 років тому +1

      You want to snap it to the hand of the first person player?

    • @esotericsean
      @esotericsean 6 років тому +2

      Jayanam Yeah, exactly! I wrote a simple script that lets me pick up objects and carry them around, but if they hit a wall they get off center. I also want the objects to rotate so they face the camera properly.

  • @Евгений-ж7ж2ш
    @Евгений-ж7ж2ш 3 роки тому

    It works! Thank you!

  • @pyromaster9095
    @pyromaster9095 2 роки тому +1

    Tutorial is too quick, but after watching it several times i got it.

  • @scprepper2672
    @scprepper2672 5 років тому +2

    Two problems/Questions. First, it's very sensitive. Is there a way to slow down the movement?
    Second, how can i lock the Y axis? I tried the obvious thing of freezing Y axis on its rigidbody but that didnt work.

    • @mtalha_k
      @mtalha_k 5 років тому

      did you find a way to lock it? i need it too

    • @DeezNuts-hy7qn
      @DeezNuts-hy7qn 3 роки тому +1

      multiply the position by a float that is named smooth you can adjust it to your liking im not sure if this works but it should work
      Good Luck!

  • @letthatbe
    @letthatbe 3 роки тому

    I don’t understand shit since i am a beginner. But it works like a charm

  • @guidocomba
    @guidocomba 4 роки тому +1

    Excelent Tutorial!!! thnx so much, that helps me alot!!! Regars from Argentina!!!

  • @maciekwolski
    @maciekwolski 5 років тому

    Nice, thx to allow us easy copy past

  • @CMichaelNeely
    @CMichaelNeely 5 років тому +3

    Do you happen to have a similar tutorial for touch input?

  • @fenzfendi
    @fenzfendi 5 років тому +13

    physics while dragging? like it flops around when i drag it

    • @saiverx
      @saiverx 4 роки тому

      Maybe use the hinge-method that unityengine provides? Shouldn't be too hard creating a gameobject at the mouse-position connecting it to your object at the raycast-point where the mouse clicks. That will probably create the physics-effect you want :)

    • @naterivard
      @naterivard 4 роки тому +1

      @@saiverx You can also set `isKinematic` to `true` in `OnMouseDown` and reset it back to `false` on `OnMouseUp`.

    • @davydovua
      @davydovua 4 роки тому

      @@naterivard It will flop on gravity, but mouse movement itself will not create any force

  • @daryaf1742
    @daryaf1742 5 років тому +3

    Hi, thanks for the great tutorial. But I'm having "Assets/DragFox.cs(23,23): Error CS0029: Cannot implicitly convert type 'UnityEngine.Vector3' to 'float' (CS0029)". It seems that mZCoord can't be float?

    • @daryaf1742
      @daryaf1742 5 років тому +1

      apologies, I jst missed .z coordinate in this expression mZCoord = Camera.main.WorldToScreenPoint(gameObject.transform.position).z;

  • @LeeTGame
    @LeeTGame 5 років тому

    Short and sweet. Really nice video :)

  • @jayantbarthwal4470
    @jayantbarthwal4470 5 років тому +1

    thankyou very nice , it helped me alot.

  • @gamingrhys6413
    @gamingrhys6413 4 роки тому +1

    unity is throwing up errors like 'Assets\Drag.cs(14,19): error CS0120: An object reference is required for the non-static field, method, or property 'GameObject.transform' and Assets\Drag.cs(24,24): error CS0103: The name 'GetMousePosWorld' does not exist in the current context. please help

    • @rakhinaik1087
      @rakhinaik1087 4 роки тому

      For the second error check if your method name 'GetMousePosWorld' is exactly the same as where you are calling the method in 'OnMouseDown'.

  • @PowBro
    @PowBro 3 місяці тому

    Will this be compatible with mobile devices or touchscreens?

  • @sitsirk
    @sitsirk 3 роки тому

    with the rock its bout drive its bout powa

  • @imrankkg5029
    @imrankkg5029 4 роки тому

    lifesaver Thanks man. God Bless You.

    • @JayAnAm
      @JayAnAm  4 роки тому +1

      Glad it helped

    • @Nacho-ms2pw
      @Nacho-ms2pw 4 роки тому

      @@JayAnAm Hey, do you have any idea what trs is at 1:57 my game isn't accepting it and I'm using 2018.4.

  • @m.bilalbark3682
    @m.bilalbark3682 5 років тому

    Nice solution, thanks bro :)

  • @crab9852
    @crab9852 5 років тому +2

    Do you know how to lock it so it doesn't move the object in the y axis?

  • @Jiierf
    @Jiierf 5 років тому +1

    How could I go about making the object stop once it hits a wall whilst dragging? Currently it goes through anything but if I collide with something it should just stop

    • @amritpatel3324
      @amritpatel3324 3 роки тому

      Hello I'm having same issue. If you have found any solution then please help me 🙏

  • @nuin99
    @nuin99 5 років тому +3

    How would i limit the mouse to a specific area?

    • @nuin99
      @nuin99 4 роки тому

      Remixx i have completely given up on that lmao

  • @teimurlu
    @teimurlu 2 роки тому

    How can I lock its movement to only the X axis and also stop when touching another collider (such as ground)?

  • @Gaboxf
    @Gaboxf Рік тому

    Thank you

  • @umarfarooqbudihal2511
    @umarfarooqbudihal2511 3 роки тому

    Hey man...I love this
    I just wanna..know...how do I move the object by dragging along the path...
    ...help.plzzzz

  • @shtml54
    @shtml54 5 років тому

    Cool, It actually works.

  • @Daniken89
    @Daniken89 5 років тому +1

    Thanks my dude!

  • @_g_r_m_
    @_g_r_m_ 4 роки тому

    Thank you so much man

  • @Boyke07
    @Boyke07 3 роки тому

    How can I freeze the y-axis while dragging whis this base code?

  • @jansvec3855
    @jansvec3855 2 роки тому

    Is there any way how to move object only in two axis at once? Example: left mouse button move in X and Y and right mouse button move in Z and Y?

  • @poveaofc421
    @poveaofc421 3 роки тому

    Thank you so much

  • @artjom5617
    @artjom5617 4 роки тому +1

    hmm why cant i "clamp" the y position instead of z?
    if i change the values simply to y, it just do not react when i try to drag it. but when i change it back to Z it works again :/

    • @김채윤-i8z
      @김채윤-i8z 4 роки тому

      I have a same problem It's driving me crazy please help me I'm crying My tears are making a lake

    • @artjom5617
      @artjom5617 4 роки тому +1

      @@김채윤-i8z uff sorry its already too long ago.
      i think i just keep searching for other solutions or i tried around with that one.. i dont remember

  • @mehmetbattal8772
    @mehmetbattal8772 4 роки тому +1

    Does this work for mobile(IPhone). I know it gets mouse input but i heard that mouse input also works with touch controls is that correct?

  • @cahydra
    @cahydra 3 роки тому

    Isn't this available in the editor already?

  • @theopoldthegamer4284
    @theopoldthegamer4284 4 роки тому

    Apparently Callback Executor needs to derive from Mono Behavior??? Help!

  • @wildifin
    @wildifin 5 років тому +4

    How to do this with 2D object

    • @jamesspeed3531
      @jamesspeed3531 4 роки тому

      works the same, if your using sprites - only use x and y and within the context of Vector2 instead of Vector3

  • @timmytainment
    @timmytainment 5 років тому +1

    Not working for me. Also no errors given... I use a cube with nothing else (no rigid body, throewable, etc)

    • @JayAnAm
      @JayAnAm  5 років тому

      So you didnt add a rigidbody? Because you will need one 03:03

    • @timmytainment
      @timmytainment 5 років тому

      @@JayAnAm hi. I tried at first with one

  • @SarahAndreaRoycesChannel
    @SarahAndreaRoycesChannel 4 роки тому +2

    UA-cam is broken. 3 advertisements for 3 and bit minutes of video.

  • @zak-ks7ee
    @zak-ks7ee Рік тому

    having an issue where when I drag the object... it just goes flying off screen
    my camera has to move around the world and I would like ti to be able to go from any position and pick up and drack the object into specific places... by when I run the code, it just seems to make the objects fly of into the void. anyone got any way to fix this?
    edit: so i simply copied the code and its seems to work now (slightly stange), but still face an issue with my camera moving with the object... it seems that the objects gravity is accelerated when i move my camera around
    edit2: also figured that out... have the rigidbody be set to zero when dragging

  • @andriibilych4983
    @andriibilych4983 4 роки тому

    Thank you good man!

  • @valfareinwindir1258
    @valfareinwindir1258 5 років тому +1

    How do you drag one object by clicking anywhere?

  • @EverythingRox
    @EverythingRox 5 років тому +1

    Can somebody please tell me how to use the script on a prefab? My script is not working on the prefab.
    I am very very new to Unity and need help.

  • @azlanahmad4021
    @azlanahmad4021 3 роки тому

    what we do if we need to drag object on only x axis

  • @thezzxc9904
    @thezzxc9904 5 років тому +2

    perfect! thanks!

  • @adamabbott2014
    @adamabbott2014 2 роки тому

    why the movement speed is so slow?

  • @SharkfightersSH
    @SharkfightersSH 3 роки тому

    I am having a little issue using this in on a boardlike scene. Moving the Object towards the player will cause it to move down and (potentionally) into the ground. Any soloutions?

  • @franktout2741
    @franktout2741 5 років тому

    I can get it to work but only if the objects are closer to the camera??? How can I get it to select distant objects (not that distant really)

    • @vanshtandon1829
      @vanshtandon1829 4 роки тому

      Check Here ua-cam.com/video/FKEXWn68DSA/v-deo.html

  • @Sykkoss391
    @Sykkoss391 5 років тому

    Clean, thanks a lot :)

  • @Kieranmcm07
    @Kieranmcm07 2 роки тому

    Does anyone know how to fix that the game objects can be dragged through walls and floors?

  • @canerkuncu9191
    @canerkuncu9191 6 років тому +4

    nice tutorial thank you but i have a problem. when i dragged an object to a wall , it passes through the wall. i think i have to add velocity or something like that for dragging. but i dont know how to do it :/

    • @sevenoel
      @sevenoel 5 років тому

      I want the same too

    • @dg_dotnet9616
      @dg_dotnet9616 4 роки тому +1

      VERY SIMPLE ADD THIS "mousePoint.y = 0;" TO GetMouseWorldPos() function
      this way you lock the y axis

  • @ShacharOz
    @ShacharOz 3 роки тому

    little question: how would you limit the object from being able to get dragged through walls?

    • @DeezNuts-hy7qn
      @DeezNuts-hy7qn 3 роки тому +1

      either raycasts or box colliders on your walls

  • @lora6938
    @lora6938 3 роки тому

    Can you tell me how to make the object by clicking the mouse become a little to the left or to the right, and releasing the mouse returned to the center as it was before clicking?(for kinematic)

  • @apricodegames
    @apricodegames 2 роки тому

    İf when ı want to for mobile touch how ı can doit?

  • @mapachu6959
    @mapachu6959 6 років тому

    Good job! !
    Thank You.

    • @JayAnAm
      @JayAnAm  6 років тому

      Thx, you're welcome

  • @polkab6569
    @polkab6569 4 роки тому

    Thanks bro ! can you help pls i need delete Z and Y just move object on X

    • @thepotatogaming2340
      @thepotatogaming2340 4 роки тому

      You need to ad a rigidbody then go on constraint and freeze the position you dont want it to go on or rotation

    • @worthas7196
      @worthas7196 3 роки тому +1

      @@thepotatogaming2340 nope. that doesn't work, because the script ignores that.

  •  4 роки тому

    I need this for Super Mario 64 remake to stretch Mario head
    Bur, this script works on unity 2017?

  • @BrillFire
    @BrillFire 4 роки тому

    Translate please, почему одного ScreenToWorldPoint недостаточно для перемещения объекта, для чего нужен moffset, что это такое?

  • @augustbjrnsti1232
    @augustbjrnsti1232 4 роки тому

    does this version work with visual studio code?

  • @gildas6478
    @gildas6478 4 роки тому

    i'm using Unity 2020.1.10f1 and for some reason in visual studio code i got an error code C1513 } expected

  • @LordParcyval
    @LordParcyval 3 роки тому +1

    thanks but the object is rotating

    • @hansaxl9575
      @hansaxl9575 3 роки тому

      Constraint the rotation in the rigidbody setting

  • @robertsibek
    @robertsibek 5 років тому

    Thank you!

  • @Cyrano_Lost
    @Cyrano_Lost 2 роки тому

    thx 🙂

  • @ezoca8272
    @ezoca8272 3 роки тому

    Anybody Knows how to add like a white drag line?

  • @fallendagger2766
    @fallendagger2766 4 роки тому

    Hey how can i move that only in x axis?

  • @happytofu5
    @happytofu5 4 роки тому

    With that technique, you can drag the objects into the ground and into each other. Is there a way to avoid that?

    • @createria2
      @createria2 4 роки тому

      seme hapens in hello neighbor never join 2 cans in that game

    • @DeezNuts-hy7qn
      @DeezNuts-hy7qn 3 роки тому

      colliders or raycasts could help

    • @alfacedolidl6236
      @alfacedolidl6236 3 роки тому

      @@createria2 imagine asking? lol

  • @dvndrsingh786
    @dvndrsingh786 5 років тому +2

    so this script works fine for me!!!
    but can someone explain me what's happening?

    • @artjom5617
      @artjom5617 4 роки тому

      well, turn on the sound :D

  • @rafaelbrustolin4687
    @rafaelbrustolin4687 9 місяців тому

    Nice

  • @GustOfLuck
    @GustOfLuck 3 роки тому

    Thx

  • @erikm9768
    @erikm9768 5 років тому

    Btw, you know you dont need to write gameObject.transform , just transform is fine, or this.transform

    • @JayAnAm
      @JayAnAm  5 років тому

      :-) Yes, thx. But I found it a good practice for demonstrating that the gameobject has a transform.

  • @gatzkerob
    @gatzkerob 5 років тому +3

    My object disappears from the game window when I click on it. I logged the object coordinates in the console and it seems to be sending it way off screen. Unity 2019.2.18f1

    • @massiveleg
      @massiveleg 4 роки тому

      same

    • @massiveleg
      @massiveleg 4 роки тому

      nwm I copied the script from the desc and it worked

  • @nelubelei9330
    @nelubelei9330 4 роки тому

    Ty man!

  • @redddeleon4248
    @redddeleon4248 5 років тому

    Nice!