• 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
1
Question by xNosferatux · Oct 24, 2011 at 11:11 PM · prefabslookat

LookAt and Prefabs not working properly, Looks in entirely wrong direction

So essentially, I have a cube that is in the game to start with. When I click, a prefab called MouseMarker is created at the location of the click. I want it so that if the MouseMarker exists, the cube looks at it. Heres the code I have to make the cube look at the MouseMarker:

 var myTransform : Transform;
 
 function Update () {
     
     if(GameObject.Find("MouseMarker"))
     {
         transform.LookAt(myTransform);
     //    transform.Translate(Vector3(0,0,-0.5));
     }
 
 
 }
 

And heres the code I have to create the MouseMarker:

 var thePrefab : GameObject;
 public var point: Vector3;
 
 function Update(){
         if (Input.GetMouseButtonUp(0)){
             var hit: RaycastHit;
             var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             
             if (Physics.Raycast(ray, hit)){
                 point = hit.point;
                 
                 if(GameObject.Find("MouseMarker")){
                     Destroy(GameObject.Find("MouseMarker"));
                     Instantiate(thePrefab, Vector3(point.x, point.y+0.5, point.z), transform.rotation);
                 }else{
                     Instantiate(thePrefab, Vector3(point.x, point.y+0.5, point.z), transform.rotation);
                 }
         }
     }
 }


I also created a code to change the name of the prefab when created, due to the fact the "(Clone)" extension was causing problems, here it is:

 function Start () {
     
     name= "MouseMarker";
     Debug.Log("Renamed!");
 }

The cube, when the MouseMarker is created, looks at x:4.3 and y:89, and z:0.0 no matter where the MouseMarker is. What am I doing wrong here?

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
1

Answer by syclamoth · Oct 24, 2011 at 11:18 PM

At what point do you tell it to look at the MouseMarker? As I see it, you will always be looking at a transform called 'myTransform' which you assign in the inspector! Change that bit to

 var marker : GameObject = GameObject.Find("MouseMarker")
 if(marker)
 {
     transform.LookAt(marker.transform);
 }

and then get rid of the myTransform altogether, if it isn't doing anything.

Other than that, there are a few things I would change about it- for example, I would keep the MouseMarker as a private var inside the creation script, and then just move it around instead of deleting and respawning it whenever you want to change its position.

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 xNosferatux · Oct 25, 2011 at 01:22 PM 0
Share

Thanks mate, that worked perfectly. Though Im still rather new to unity, so that last bit doesnt really make much sense, would you $$anonymous$$d elaborating?

avatar image syclamoth · Oct 25, 2011 at 02:42 PM 0
Share

Basically, I mean you should keep a

 var marker : Transform

assign to that when you instanitate the mouse$$anonymous$$arker the first time

  if(!marker)
 {
     marker = Instantiate(blah blah however you did it);
 } else {
     marker.position = (wherever you would have instantiated it);
 }

This way, you don't have to keep deleting and remaking it.

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Smooth look at on Y axis only 1 Answer

How Can I Stop Rotation From This Script? 0 Answers

Rotation offset help! 0 Answers

transform.LookAt not updating each frame until UI Slider input is changed 1 Answer

Making a 2d object lookat a 3d object on the y-axis(c#) 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