Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 redphaze · Apr 04, 2017 at 05:27 AM · rtscamera movementscrollwheel

Just wondering if anyone can help me work out why this script doesn't zoom my camera in using the scrollwheel?

using System.Collections; using System.Collections.Generic; using UnityEngine;

public class CameraManager : MonoBehaviour {

 public float zoomMax = -17;
 public float zoomMin = -3;
 public float zoomSpeed = 0.5f;
 public float zoomCam = 10f;
 public float horizontalSpeed = 40;
 public float verticalSpeed = 40;
 public float camRotateSpeed = 80;
 public float camDistance = 30;
 public float curDistance;
 

 // Update is called once per frame
 void Update () {

     
     float horizontal = Input.GetAxis("Horizontal")*horizontalSpeed * Time.deltaTime;
     float vertical = Input.GetAxis("Vertical") * verticalSpeed * Time.deltaTime;
     float Rotation = Input.GetAxis("Rotation");
     
     //   Vector3 camDefaultPos;
    
         transform.Translate(Vector3.forward * vertical);
         transform.Translate(Vector3.right * horizontal);

    // camDefaultPos = transform.position;

     
     zoomCam += Input.GetAxis("Mouse ScrollWheel") * zoomSpeed;
     zoomCam = Mathf.Clamp(zoomCam, zoomMin, zoomMax);

     // Bit that rotates the camera.
     if (Rotation != 0)
     {
         transform.Rotate(Vector3.up, Rotation * camRotateSpeed * Time.deltaTime, Space.Self);
     } 




 }

}

Comment
Add comment
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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by MarshallN · Apr 04, 2017 at 04:34 PM

You're setting the zoomCam variable and clamping it, but never using it. You need to set the distance between the camera and the object it's looking at to zoomCam after clamping it. You can do that by finding the vector from the object to the camera, using Vector3.Normalize() on it, then setting the camera's position to the object's position + that vector * zoomCam.

Comment
Add comment · Show 2 · 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 redphaze · Apr 04, 2017 at 11:47 PM 0
Share

Awesome thanks! How would i then set a max and $$anonymous$$imum height for the zoom?

avatar image MarshallN redphaze · Apr 04, 2017 at 11:52 PM 0
Share

Your zoom$$anonymous$$in and zoom$$anonymous$$ax variables are already clamping the zoom distance. If you're looking to clamp height specifically, you'll want take the final vector (object's position + (normalized vector from object to camera) * zoomCam) I described above, set its y value to y$$anonymous$$in if it's below it and y$$anonymous$$ax if it's above it, and assign it to the camera's position after you've done that.

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

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

RTS Camera - Zoom is not uniform, yet code is? 2 Answers

Drag to make box in RTS? 3 Answers

can someone help me with my hud? 1 Answer

Click and Drag RTS Mouse selecting script help. 1 Answer

RTS Grid Idea? 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