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 mariusholstad · Mar 21, 2015 at 06:39 PM · camerarotationrigidbodytorque

How to rotate camera with offset using torque to look at target

I have a camera with a rigidbody which I move and rotate by applying forces and torques to. I'm trying to make the camera with an offset automatically look at the target / player.

The camera is moved using a standard Seek function. The offset is applied using the transform directions of the camera.

 void FollowPlayer () {
     GameObject player = GameObject.FindGameObjectWithTag("Player");

     // offset with the direction of this transform
     Vector3 offset = this.transform.TransformDirection (offsetPositionFromPlayer);
     Vector3 targetDestination = player.transform.position + offset;

     Seek (targetDestination);
 }

The torque required to make the camera look a the target is calculated like this:

 Vector3 torqueLookRotation (Transform target) {

     Vector3 targetDelta = target.position - this.transform.position;
     
     float angleDiff = Vector3.Angle (this.transform.forward, targetDelta);
     
     Vector3 cross = Vector3.Cross (this.transform.forward, targetDelta);

     Vector3 torque = cross * angleDiff;
     
     return  torque;
 }

What is the problem? The camera is constantly rotating when given an offset.

Why does it happen? The torque applied is making the camera's forward direction point at the target. The offset is moving the forward direction, making the camera never reach its target.

So, what I'm asking: Without using other game objects; what is the most elegant way of solving this problem? Have been trying to solve it for days! Any thoughts appreciated :)

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

0 Replies

· Add your reply
  • Sort: 

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

2 People are following this question.

avatar image avatar image

Related Questions

Rotate a rigid body while it's constrained. 2 Answers

Rigidbody rotation around CenterOfMass 1 Answer

Cinemachine is stuttering with 3D Rigidbody when rotating the camera 1 Answer

Without affecting Velocity, what is the best method to apply direction to an object moving with forces? 1 Answer

Object Reference Required to access non-static member 'UnityEngine.RigidBody.AddRelativeTorque' 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