Unity Tutorial : Drag Gameobject with Mouse

Поделиться
HTML-код
  • Опубликовано: 4 фев 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.

  • @GBart
    @GBart 2 года назад +1

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

  • @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!!

  • @greatpinkwish
    @greatpinkwish Год назад

    really cool! many thanks!

    • @JayAnAm
      @JayAnAm  Год назад

      Glad you liked it!

  • @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!

  • @qweasdy-pc6ql
    @qweasdy-pc6ql 2 года назад

    Quick & easy to understand. Thank you very much.

  • @rodneyapplebyphd
    @rodneyapplebyphd 4 года назад +1

    Great explanation, quick and simple to implement.

  • @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

  • @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

  • @joshuadrewlow
    @joshuadrewlow 2 года назад

    Simple and working amazing still in 2022 :)

  • @AidanDemps
    @AidanDemps 4 года назад +8

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

  • @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!

  • @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!

  • @omar-0082
    @omar-0082 Год назад

    THANK YOU, you are amazing

  • @Edrenn-live
    @Edrenn-live 3 года назад

    Very nice and clear tutorial ! Thanks !

  • @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

  • @QQrest
    @QQrest 3 года назад

    Thanks! You really Helped Me For My Game!

    • @JayAnAm
      @JayAnAm  3 года назад

      Glad I could help!

    • @QQrest
      @QQrest 3 года назад

      @@JayAnAm :)

  • @pyromaster9095
    @pyromaster9095 2 года назад +1

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

  • @letthatbe
    @letthatbe 3 года назад

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

  • @utkarshpanchal400
    @utkarshpanchal400 3 года назад

    Thanks buddy really really Appricaiated

  • @deangreasley8168
    @deangreasley8168 6 лет назад +1

    excellent tutorial, thanks for this !

    • @JayAnAm
      @JayAnAm  6 лет назад

      Thx, you're welcome

  • @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?

  • @MaruskaStarshaya
    @MaruskaStarshaya 3 года назад

    Works as magic, thank you!

  • @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

  • @guidocomba
    @guidocomba 4 года назад +1

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

  • @shauryakumar306
    @shauryakumar306 3 года назад

    Thanks a lot. Helped me a lot.

  • @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

  • @maciekwolski
    @maciekwolski 5 лет назад

    Nice, thx to allow us easy copy past

  • @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'.

  • @joeaugustine4172
    @joeaugustine4172 2 года назад

    Fantastic tutorial!!!

  • @jayantbarthwal4470
    @jayantbarthwal4470 5 лет назад +1

    thankyou very nice , it helped me alot.

  • @thepotatogaming2340
    @thepotatogaming2340 4 года назад

    Best tutorial ever

  • @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

  • @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.

  • @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!

  • @PowBro
    @PowBro 3 месяца назад

    Will this be compatible with mobile devices or touchscreens?

  • @Gaboxf
    @Gaboxf Год назад

    Thank you

  • @Boyke07
    @Boyke07 3 года назад

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

  • @teimurlu
    @teimurlu 2 года назад

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

  • @apricodegames
    @apricodegames 2 года назад

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

  • @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;

  • @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

  • @Евгений-ж7ж2ш
    @Евгений-ж7ж2ш 3 года назад

    It works! Thank you!

  • @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?

  • @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

  • @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 🙏

  • @theopoldthegamer4284
    @theopoldthegamer4284 4 года назад

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

  • @poveaofc421
    @poveaofc421 3 года назад

    Thank you so much

  • @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

  • @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

  • @Kieranmcm07
    @Kieranmcm07 2 года назад

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

  • @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?

  • @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?

  • @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

  • @adamabbott2014
    @adamabbott2014 2 года назад

    why the movement speed is so slow?

  • @azlanahmad4021
    @azlanahmad4021 3 года назад

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

  • @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.

  • @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 ruclips.net/video/FKEXWn68DSA/видео.html

  • @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.

  • @_g_r_m_
    @_g_r_m_ 4 года назад

    Thank you so much man

  • @ezoca8272
    @ezoca8272 3 года назад

    Anybody Knows how to add like a white drag line?

  • @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.

  • @Daniken89
    @Daniken89 5 лет назад +1

    Thanks my dude!

  • @cahydra
    @cahydra 3 года назад

    Isn't this available in the editor already?

  • @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?

  • @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

  • @valfareinwindir1258
    @valfareinwindir1258 5 лет назад +1

    How do you drag one object by clicking anywhere?

  • @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)

  •  4 года назад

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

  • @shtml54
    @shtml54 5 лет назад

    Cool, It actually works.

  • @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

  • @LeeTGame
    @LeeTGame 5 лет назад

    Short and sweet. Really nice video :)

  • @Cyrano_Lost
    @Cyrano_Lost 2 года назад

    thx 🙂

  • @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

  • @artlab5724
    @artlab5724 4 года назад

    Here script who want to lock gameobject by Y axis - pastebin.com/AV0cgtnu
    You can lock any axis you want

  • @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.

  • @andriibilych4983
    @andriibilych4983 4 года назад

    Thank you good man!

  • @thezzxc9904
    @thezzxc9904 5 лет назад +2

    perfect! thanks!

  • @BrillFire
    @BrillFire 4 года назад

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

  • @mapachu6959
    @mapachu6959 6 лет назад

    Good job! !
    Thank You.

    • @JayAnAm
      @JayAnAm  6 лет назад

      Thx, you're welcome

  • @SarahAndreaRoycesChannel
    @SarahAndreaRoycesChannel 4 года назад +2

    RUclips is broken. 3 advertisements for 3 and bit minutes of video.

  • @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

  • @GustOfLuck
    @GustOfLuck 3 года назад

    Thx

  • @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

  • @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

  • @augustbjrnsti1232
    @augustbjrnsti1232 4 года назад

    does this version work with visual studio code?

  • @fallendagger2766
    @fallendagger2766 4 года назад

    Hey how can i move that only in x axis?

  • @Laxhoop
    @Laxhoop 6 лет назад

    I applied this to an object in my scene, but it just gives me a ton of errors whenever I click on the object I applied it to. They all say “Object reference not set to an instance of an object”

    • @JayAnAm
      @JayAnAm  6 лет назад

      Seems like you didnt assign the drag object in the script (inspector)

    • @Laxhoop
      @Laxhoop 6 лет назад

      Jayanam
      But I did everything you did in the video. There is no options in the script to change anything in the inspector.

    • @JayAnAm
      @JayAnAm  6 лет назад

      @@Laxhoop Yes, my bad... perhaps you dont have a main camera in your scene?

    • @Laxhoop
      @Laxhoop 6 лет назад

      Jayanam
      I do.

    • @JayAnAm
      @JayAnAm  6 лет назад

      @@Laxhoop At which line does the error occur? Are you familiar with attaching a debugger?

  • @karolis4904
    @karolis4904 4 года назад +4

    THE SCRIPT boyz
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class dragobiject : MonoBehaviour
    {
    private Vector3 mOffset;
    private float mZCoord;
    void OnMouseDown()
    {
    mZCoord = Camera.main.WorldToScreenPoint(gameObject.transform.position).z;
    //idk
    mOffset = gameObject.transform.position - GetMouseWorldPos();
    }
    private Vector3 GetMouseWorldPos()
    {
    //Y X
    Vector3 mousePoint = Input.mousePosition;
    // Z COORD
    mousePoint.z = mZCoord;
    return Camera.main.ScreenToWorldPoint(mousePoint);
    }
    void OnMouseDrag()
    {
    transform.position = GetMouseWorldPos() + mOffset;
    }
    }

  • @rafaelbrustolin4687
    @rafaelbrustolin4687 9 месяцев назад

    Nice

  • @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

  • @robertsibek
    @robertsibek 5 лет назад

    Thank you!