Building a Camera Controller for a Strategy Game

Поділитися
Вставка
  • Опубліковано 23 чер 2019
  • In this video we take a look at how to build a camera system for a traditional simulation/strategy/management game. We look at how to rig a camera in Unity so that it moves and rotates around a center point in the world, rather than from a "first-person" perspective.
    We also look at how to focus on and follow an object with the rig.
    Be sure to LIKE and SUBSCRIBE if you enjoyed this guide! Share the video for extra love!
    - - - - - - - - - - - - -
    I've set up a Discord so viewers can hangout, chat and share their own game dev tips and tricks. It's also a perfect place to hear about what videos I'm working on, or discussing episodes in more detail with other members of the Game Dev Guide community.
    You're invited to join the Discord at / discord
    - - - - - - - - - - - - -
    Socials:
    Twitter - / gamedevguideyt
    Facebook - / gamedevguideyt

КОМЕНТАРІ • 400

  • @JonasTyroller
    @JonasTyroller 4 роки тому +313

    Oh sweet. Really high quality tutorial. Very recommendable.

    • @verpix4956
      @verpix4956 4 роки тому +10

      Wait did you use this for Islanders!?!

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

      Hi jonas

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

      @@verpix4956 Pretty sure he modified it using a similar strategy to the ones found on the asset store. It just polishes it up and adds a few extra features such as max and min zoom, but yes its very similar to this as far as I know.

    • @adrianalcomendras6754
      @adrianalcomendras6754 4 роки тому +6

      If Jonas is here then I guess im set

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

      Come on Jonas answear him..how did you make it in your game

  • @_wayneman_
    @_wayneman_ 4 роки тому +88

    For everyone who runs into problems with stuttering or jittering cameras here's a little advice that I wish was part of this video: Put ALL code that manipulates a cameras position or rotation in the LateUpdate() method not the Update()! This way you will ensure that nothing will move around after your cameras transform has already been updated during the frame.

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

      Wow! Thank you! I thought all time that the problems is in the postprocessing. Great my problem is solved! ;)

    • @TheTacoBros
      @TheTacoBros 2 роки тому +2

      it doesnt work

    • @Akeruyri
      @Akeruyri Рік тому +2

      Also, if your using rigidbodies with Physics that the camera follows, put them in FixedUpdate so the Camera moves with the physics updates

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

      thanks

    • @fastpicker89
      @fastpicker89 Рік тому +2

      This didn't help mine unfortunately

  • @Hamentsios10
    @Hamentsios10 3 роки тому +39

    One thing we didn't cover here is how to limit the zoom and the pan of the camera so it won't go off world. Excellent stuff as always though.

    • @betomaluje
      @betomaluje 3 роки тому +11

      Maybe it's not ideal but I ended up doing:
      private void HandleZoom()
      {
      if (Input.mouseScrollDelta.y != 0)
      {
      newZoom += Input.mouseScrollDelta.y * zoomSpeed;
      newZoom.y = Mathf.Clamp(newZoom.y, minZoom, maxZoom);
      newZoom.z = Mathf.Clamp(newZoom.z, minZoom, maxZoom);
      cameraTransform.localPosition = Vector3.Lerp(cameraTransform.localPosition, newZoom, Time.deltaTime * movementTime);
      }
      }

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

      @@betomaluje Clamping the positions is the ideal way :D

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

      @@cankarkadev9281 Could you elaborate on maybe what that'd look like? Or is what Alberto did what you're referring to?

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

      @@TheAwesomeAlan Clamp means clamping in Mathf.Clamp(), Clamp means that u "animate" a Cube from minZoom to maxZoom. I hope u understand Clamping now : )

    • @Ryan-ww7un
      @Ryan-ww7un 2 роки тому +10

      I just did:
      // Clamp newPosition to the bounds of the map (hardcoded -- not great, but can be extracted to variables at any point)
      newPosition = new Vector3(Mathf.Clamp(newPosition.x, -7f, 7f), 0.1f, Mathf.Clamp(newPosition.z, -7f, 7f));
      and in the zoom:
      // Clamp zoom to prevent clipping into mesh or zooming too far out
      newZoom = new Vector3(0, Mathf.Clamp(newZoom.y, 2, 12), Mathf.Clamp(newZoom.z, -12, -2));

  • @erz3030
    @erz3030 4 роки тому +71

    Excellent video! The comparison between the old ortho vs perspective but low FOV was eye opening for me.

    • @GameDevGuide
      @GameDevGuide  4 роки тому +18

      Right? I imagine it was just as eye opening as when I figured that out myself! 😂

  • @kenneyshepard4511
    @kenneyshepard4511 3 роки тому +19

    The comments section is full of helpful tricks to make this better. Here is mine. If you use a logarithm on your zoom speed it will zoom farther the further away you get. Meaning the zoom will feel much more natural. It will also be a good idea to link your zoom into you panning speed. That way you can pan at quicker rate the further you get away negating the need for a faster pan speed. These are pretty complex functions that I'm still working on.

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

      Very helpful tip!!
      I will try this

    • @jern2216
      @jern2216 10 місяців тому

      Sorry, but how do I implement this?

    • @kenneyshepard4511
      @kenneyshepard4511 10 місяців тому

      @@jern2216 use an exponential function ie y=x^2 where y = pan speed and x = your caneras offset from focus. Depending on your scale you'll need to play around with the equation to get desired results.

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

    Love the quality of this tutorial. Simple and straight forward but dives deep with all the features you would want in a Strategy Game camera. Cant wait to see more tutorials from you!

  • @TheFrozenFractal
    @TheFrozenFractal 3 роки тому +11

    This is honestly one of the best unity tutorials I have ever seen!

  • @thepolygonpilgrimage
    @thepolygonpilgrimage 5 років тому +22

    Thanks very much! I've had a great idea for a sim like management game for some time but never did stop to figure out how to make this type of camera setup. Your method is much smoother than my attempts! :) Appreciate the video very much. Looking forward to the next one!

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

    Dude what a high quality of a tutorial. Im so amazed. Huge respect u have a new fan and subscriber 😊

  • @mcd1814
    @mcd1814 3 роки тому +14

    Interesting fact: the thing with the „fake orthographic view“ works in real life. If you use a tele photo lens (200mm+) you will loose nearly all perspective in the picture.
    In a 3D Mockup Tool, i missed an orthographic view. So i just used a 5000mm camera lens and put it far, far away and here you go.
    It just explained to me why this works and i found it really interesting. So i just randomly share these thoughts, maybe someone ist interested✌🏼

  • @Haxel0rd
    @Haxel0rd 3 роки тому +20

    If you have problems with ROTATION not working (saw some in the comments):
    - set the rigs position to null
    - add 3D-Object > Cube to the rig to make its position visible
    - then take the map / terrain / level and made its ground touch the cube
    - now try to rotate again, it should work now
    Explanation: many (including me at first) think the rig has to be above the terrain,
    somewhere in the air. But it should be level with the ground. You will understand
    the issue better once the rig is visible to you. Hope this helps, cheers.

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

      I had this problem and your solution helped me fix it, thanks! The problem was it was rotating around the rig's position (what it's meant to do) but my rig was somewhere absolutely useless.

    • @Ryan-ww7un
      @Ryan-ww7un 2 роки тому +1

      You can alternatively add a widget to the rig with the button beside where you name it in the inspector.

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

      Thank you !

    • @chopin1998
      @chopin1998 2 роки тому +2

      newRotation *= Quaternion.AngleAxis(rotationAmount, transform.up);

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

    Nice tutorial, I found your video on a reddit post on unity 3d. I really liked the way you teach and your patience to explain everything. Also, the quality production is amazing. Keep going

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

    Excellency! Can't describe how clear and well-rounded your tutorial is.

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

    This... was a legit tutorial, thank you - I didn't attempt this yet but I am watching it again to practice. I had a plan today and watched a Unity camera tutorial which was done half assedly making assumptions about the viewers knowledge without providing references and spent nearly 6 hours researching to no avail. By comparison this was a breath of fresh air.

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

    Thank you. This is exactly the information that I was looking for starting my new project. Will definitely look around your channel more for even more helpful guides

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

    11:45 - Impressed by your commitments 🙏🏼
    Was wanting to see mouse interactions.

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

    Great work dude, exactly what i was looking for. Im currently moving from c++ to unity and it helps to have some nice tutorials to get my head round.

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

    Thank you. Thank you so much. I am a long time gamer, script kitty programmer that finally has decided to give making content a shot. And in true self destructive fashion I have volunteered to make an RTS my first project. I am a glutton for punishment. Your camera set up is by for the most straight forward and descriptive means I have ever come across. This was an excellent video.

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

    Love the isometric with depth trick! Thanks and great tutorial!

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

    Actually useful tutorial. After hundreds of others, that handle perspective camera zoom as FOV change - this is truly a breath of fresh air. Top tier, sir, top tier. Love it.

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

    This was fantastic! I really found this to be incredibly helpful. You do a great job in teaching and explaining all these details. Keep it up!

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

    The BEST tutorial you can found for RTS camera

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

    If you ever even think of making a Strategy game, You must watch this!
    Amazing tutorial!
    Thank you!

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

    Thank you so much. I am new to Unity and am trying to create a game I have in my head. I’ve been having to figure out Isometric game design with its lack of tutorial and resources has been frustrating.
    This camera setup will let me make the game in 3D where there is just much much more tutorials and resources for.

  • @andrewpullins8817
    @andrewpullins8817 29 днів тому

    Your tutorials are absolutely amazing 😍 I am starting to prototype a new tower defense game and this will be a great rig for my camera. Thank you very much for this.

  • @themrfj
    @themrfj 2 роки тому +5

    You could make the camera zoom and rotation a bit more intuitive (When looking at the gameobjects and values) by having another layer in between the camera and the rig called "Pivot", aligned with the camera. The camera would now only need to move on one axis to zoom, the "pivot" would handle rotation, and the "rig" would move across the landscape.

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

    Very clear and well-produced tutorial! impressive.

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

    Quite literary all you need to hear about camera movement in 1 simple to follow tutorial. Thanks for this! Like.... a lot!

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

    well i've done it years ago..i was surprise many people don't use this trick..but this is nice tutorial delivery...i am subbing..

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

    Brilliant video mate! Thank you for putting it together. Also, I enjoyed the humorous bits tossed in too. Subbed :)

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

    Thanks for the wonderful lesson. UA-cam needs more Unity's awesome tutorial like this. I liked and subscribed.

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

    I am an absolute noob at game dev, but I've made such a camera controller in my "game" with a plane, a sphere and four cubes, and it feels sooo satysfying :D THANKS!

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

    Incredible that this tutorial is free. Well done, super useful!

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

    Love love love your videos! Can't wait to see your rpg series! (If that's in the works)
    I really want to do turn based combat properly with items, camera events, etc.

  • @Noximous
    @Noximous Рік тому +1

    i know this video is very old.. but this was a beautiful tutorial.. well spoken, easy to follow and fantastic results A+

  • @Christian-dd2qm
    @Christian-dd2qm Рік тому

    Thank you so much! I used this code in my Master Thesis and just now I implemented it in a project for my job. Much appreciated!!

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

    this is a BEAUTIFUL piece of work.

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

    Big thanks for this video! I've managed to create a solar system tactical overview using your video and applying it to the new Unity input system!

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

    I love your sense of humor! :D Also great content as always on this channel.

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

    Your tutorials are very high quality. Subbed

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

    Great video as always. Best Unity videos on youtube by far !

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

    Very easy to understand .great tutorial and great tutor.

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

    Thank you, I really like the way you lectured this. It has helped me immensely.

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

    Very useful guide! Thanks for sharing.

  • @guerrillahq
    @guerrillahq 2 місяці тому

    Wow thanks so much I learnt so many things from this short video very amazing and to tjw point with great explaining 💫

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

    amazingly detailed and well explained tutorial!

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

    Regarding "fast mode" : Draw inspiration from Supreme Commander and other strategy games that modify your speed by your zoom ( in a very organic way ). AKA, further out = faster, closer in = slower. This also helps to establish feelings of scale and give a very pleasing way of controlling your camera speed.

    • @jern2216
      @jern2216 10 місяців тому

      How do I do that?

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

    Great video! Easy to implement and yet fully functional!!

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

    This was an interesting tutorial and I like the concepts.
    Since I had issues with the camera transform for my particular type of game, I ended up with a solution of zooming by changing the camera's FOV, as tweaking the FOV was something we already did in the video.
    The function to handle zooming works like this, and requires a public/serialized reference to the camera.
    I also made it so that holding the Shift key makes this zoom faster.
    void HandleZoomInput() {
    string axis = "Mouse ScrollWheel";
    float zoomAmount = Input.GetKey(KeyCode.LeftShift)
    ? fastZoomAmount : defaultZoomAmount;
    if (Input.GetAxis(axis) != 0) {
    float val = Input.GetAxis(axis) * zoomAmount
    * Time.deltaTime;
    camera.fieldOfView -= val;
    }
    //Check if within bounds
    if (camera.fieldOfView > minZoomAmount) {
    camera.fieldOfView = minZoomAmount;
    } else if (camera.fieldOfView < maxZoomAmount) {
    camera.fieldOfView = maxZoomAmount;
    }
    }
    There are probably better solutions to ensuring that the zoom stays within the bounds but this was one option for me.

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

    Great job. Very smooth and easy

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

    Really awesome tutorial ... clear, simple and great !!! thanks

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

    Really helpful. So well explained. So well write. Thanks a lot!!

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

    Looks great! Much better than most of the cameras out there. Totally using this in my western RTS sim now!

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

    Wow...
    Being born and raised with FPSes, the 'issue' during the first 2 minutes of the video would've never occurred to me lol...
    I legitimately saw nothing wrong for the longest time...
    But thinking about how I would walk-around and view a table-top game... it all clicks!
    Bottom-line, excellent designing and scripting!

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

    Absolutely amazing video, exactly the type of camera i was looking for. You should make a tycoon/simulation game asset for the store, I would buy it instantly :)

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

    OMG this was perfect! you're an excellent tutor!

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

    Awesome video. Definitely gonna use some of this. Now I just gotta convert it to using Touch!

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

    Thank you for your excellent video. Now I can make a camera controller for my strategy game.

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

    Thank you very Much, now I can start developing basic Mechanics based on this!

  • @wagamuma2617
    @wagamuma2617 3 роки тому +29

    Great turorial! For anyone trying to clamp the zoom and finding the other examples below don't work, try this really simple one it works perfectly for me
    public float maxZoom, minZoom; // I set these to -100 and -700 in inspector
    (then in HandleMouseInput replace the scroll bit with below)
    if(Input.mouseScrollDelta.y!=0)
    {
    if(Input.mouseScrollDelta.y>0 && newZoom.z < maxZoom)
    {
    newZoom += Input.mouseScrollDelta.y * zoomAmount;
    }
    if (Input.mouseScrollDelta.y < 0 && newZoom.z > minZoom)
    {
    newZoom += Input.mouseScrollDelta.y * zoomAmount;
    }
    }

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

      It workied perfectly with the mouse indeed, but do you have any idea how to do it for keyboard?

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

      @@thomascrozelon1648 I'm sure you figured this out by now, but all you have to do is add that extra && segment to the if statement (I used different variable names):
      if(Input.GetKey(KeyCode.R) && newZoom.z < zoomInConstraint)
      {
      newZoom += zoomAmount;
      }
      if(Input.GetKey(KeyCode.F) && newZoom.z > zoomOutConstraint)
      {
      newZoom -= zoomAmount;
      }

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

      Idk why but it doesn't work for me

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

      @@aurl3119 just use clamp

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

      @@SaiponathGames How do you use clamp?

  • @cho.gath789
    @cho.gath789 3 роки тому

    Thank you for sharing the top on Field of View

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

    This was very helpful. One thing I did find is
    that I had to multiply my "movementSpeed" by Time.deltaTime when it got changed by the keyboard. If I didn't then it would have difference speeds at different framerates. I tested it at 10, 30, 60, and 300 FPS using Application.targetFramerate

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

    Thanks for this, it's exactly what I wanted for my game.

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

    Nice. I spent 7 hours doing this on my own. I just couldn't be satisfied with what is default camera behaviour, so I revisited trigonometry and got going. I probably watched 2h of tutorials and read 50 posts. Noone did what I wanted.
    Now I lay in bed at 1am and then stumble upon this...

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

    Thanks for this great video, it contains some good tips.

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

    Thank you. This is what I was looking for

  • @Itharen
    @Itharen 27 днів тому

    so good, very nice, thanks!

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

    you helped me make a touch controller with the same mechanics idea thanks a lot!.

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

    Such a great video. So useful

  • @commandogooseproductions4997
    @commandogooseproductions4997 2 роки тому +2

    btw, to anyone wanting a zoom with the scroll wheel, literaly just do this.
    if (Input.GetAxis("Mouse ScrollWheel") > 0f)
    {
    newZoom += zoomAmount;
    }
    if (Input.GetAxis("Mouse ScrollWheel") < 0f)
    {
    newZoom -= zoomAmount;
    }

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

    that was the best tutorial I ever watched👍

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

    Nice I was looking some of these tricks.

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

    Very cool video mate, honestly you make some really informative stuff!
    Just wondering, do you think you could do a video on creating a Camera Controller but for a 3rd Person 3D-Platformer? Would love to see one of those!

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

    Thank you very much! Now I can create a game with a good movement.

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

    thank you so much! great video! please keep making another helpfull tutorial

  • @gabrielp.2288
    @gabrielp.2288 Рік тому

    Thank you for this great tutorial :

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

    PERFECT tutorial!

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

    Great video. Thank you

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

    Very helpful thanks!

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

    Excellent video!

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

    Very excellent tutorial keep up the good work. Maybe to keep things in spirit of strategy games, you can make a tutorial next on minimap/fog of war :)

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

    You are a hero, Sir.

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

    Great video really!!

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

    So dope tutorial !

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

    That was an excellent tutorial!! Thank you very much. Any thoughts on animating the cars / planes? Thanks again, Greg

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

    This is amazing, I just wish I could easily do that with Cinemachine...

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

    Great video, very helpful. Wondererd if you'd consider updating it to the new Input System?

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

    great video m8, very usefull

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

    Brilliant video!
    One think that I wanted in my game is to have a smooth transition when you start following/focusing an game object.
    Hint for anyone needing the same:
    You can easily do that by setting the newPosition variable in HandleMovementInput() method to be equal to followTransform.position, like that:
    if (Input.GetKey(KeyCode.F)) // I removed the F binding from zoom because I allow zoom only via mouse.
    {
    newPosition = followTransform.position;
    }

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

      hello, i tried doing what you said as it is a cool feature but it doesn't seem to work for me (maybe i'm too much of a beginner...), so could you explain a bit more please ? :D

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

    Nice video! Loved it!
    But I have one question. How do I make a boundary around the scene, that the camera will stay inside? - Mostly just so the player doesn't move way out of the game.

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

    brilliant, helped so much, thanks a lot ;-)

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

    8:35 - The subtle big difference 😍😀 Wow.

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

    You helped me a LOT

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

    Great video, thanks :)

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

    I really love you guy!

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

    Thank you very much !!!

  • @TheLabecki
    @TheLabecki 11 місяців тому

    Great tutorial. I am wondering how one would want to place bounds on the zoom in this case.

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

    very good tutorial

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

    我找到了好久,终于找到了,非常感谢

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

    Thankyou, So much.