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 Dubious-Drewski · Aug 25, 2012 at 09:57 PM · rotationinstantiatereference

How do I reference an object's rotation through an attached script?

I feel foolish, but I can't find an answer to this anywhere. I have a first person camera from which I am launching a projectile. The following script is attached to it. When the projectile launches, it always points "North"; it always launches in the same direction and ignores my camera's orientation.

 var newObject : Transform;
 
 function Update () {
     if (Input.GetButtonDown("Fire1")){
         Instantiate(newObject, transform.position, Quaternion.Euler(transform.rotation.x+90, transform.rotation.y, transform.rotation.z));
     }
 }

And here's the part that REALLY confuses me. If I use this instead:

 Instantiate(newObject, transform.position, transform.rotation);
 //This code doesn't allow me to slightly adjust the angle of firing


This code will launch the the projectile down the camera's Z axis, like I expect. So why doesn't it work when I use Quaternion.Euler instead?

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
Best Answer

Answer by ScroodgeM · Aug 25, 2012 at 10:07 PM

use this line

Instantiate(newObject, transform.position, transform.rotation);

instead of

Instantiate(newObject, transform.position, Quaternion.Euler(transform.rotation.x+90, transform.rotation.y, transform.rotation.z));

transform.rotation is Quaternion. don't use it's components unless you understand how it works.

addon: if you want to rotate from initial rotation, use

C#:

Quaternion offsetFromForward = Quaternion.Euler(10f, 10f, 0f);
Instantiate(newObject, transform.position, transform.rotation * offsetFromForward);

JS:

var offsetFromForward : Quaternion = Quaternion.Euler(10f, 10f, 0f);
Instantiate(newObject, transform.position, transform.rotation * offsetFromForward);
Comment
Add comment · Show 9 · 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 Dubious-Drewski · Aug 25, 2012 at 10:20 PM 0
Share

Thank you for responding, but that's a non-answer. :(

EDIT: Never$$anonymous$$d, you updated.

avatar image ScroodgeM · Aug 25, 2012 at 10:22 PM 0
Share

first line was an answer 8) check it again, i'd explain it a little 8)

avatar image Dubious-Drewski · Aug 25, 2012 at 10:33 PM 0
Share

Your suggestion is close to what I need, but there are two problems:

  1. "transform.up" sounds like a simple 90 degree rotation. What if I want 80 degrees? What if I want to fire a projectile with some random variance in accuracy? What is the command to input each x,y,z direction individually? That's what I need.

  2. I get this error when I run your code: No appropriate version of 'UnityEngine.Object.Instantiate' for the argument list '(UnityEngine.Transform, UnityEngine.Vector3, UnityEngine.Vector3)' was found

avatar image ScroodgeM · Aug 25, 2012 at 10:42 PM 0
Share
  1. i'd explain answer about it. i saw "x+90" and had think that you need up/down 8)

  2. my mistake, fixed.

check answer again.

avatar image Dubious-Drewski · Aug 25, 2012 at 11:07 PM 0
Share

So sorry, but I get this error with your code

';' expected. Insert a semicolon at the end

For this line:

Quaternion offsetFromForward = Quaternion.Euler(10f, 10f, 0f);

Which doesn't make any sense to me because there's clearly a semicolon there.

Show more comments

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

8 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

instantiate gameobjects into area 1 Answer

Error when trying to instantiate 1 Answer

How to create GameObject (from prefab) at location of BoxCollider2D with rotation? 0 Answers

Door open animation by script 2 Answers

Script gives wrong rotation. 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