• 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 ALEGOMan · Dec 23, 2014 at 06:52 PM · javascript3dblenderfacing

How do I make my imported 3d model face the player?

I made a little 3d character in blender and imported him into unity, I added a AI script, but the character supposed to "face" the player, but instead the top of his head faces the player. No matter how many different ways I rotate the character both in blender and unity, I stil get the same result.alt text pic and code included if need be.

 var Distance;
 var Target : Transform;
 var lookAtDistance = 25.0;
 var chaseRange = 15.0;
 var attackRange = 1.5;
 var moveSpeed = 5.0;
 var Damping = 6.0;
 var attackRepeatTime = 1;
 
 private var attackTime : float;
 
 var controller : CharacterController;
 var gravity : float = 20.0;
 private var MoveDirection : Vector3 = Vector3.zero;
 
 function Start()
 {
     attackTime = Time.time;
 }
 
 function Update()
 {
     Distance = Vector3.Distance(Target.position, transform.position);
     
     if(Distance < lookAtDistance)
     {
         lookAt();
     }
     
     if(Distance > lookAtDistance)
     {
         //renderer.material.color = Color.green;
     }
     
     if(Distance < attackRange)
     {
         attack();
     }
     else if(Distance < chaseRange)
     {
         chase();
     }
 }
 
 function lookAt()
 {
     //renderer.material.color = Color.yellow;
     var rotation = Quaternion.LookRotation(Target.position - transform.position);
     transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
 }
 
 function chase()
 {
     //renderer.material.color = Color.red;
     
     moveDirection = transform.forward;
     moveDirection *= moveSpeed;
     
     moveDirection.y -= gravity * Time.deltaTime;
     controller.Move(moveDirection * Time.deltaTime);
 }
 
 function attack()
 {
     if(Time.time > attackTime)
     {
         Debug.Log("Inset Attack and health loss here");
         var GUIManager : GUIManager = GameObject.Find("First Person Controller").GetComponent("GUIManager");
         GUIManager.AdjustCurrentHealth(-10);
         attackTime = Time.time + attackRepeatTime;
     }
 }
 
 //agressive enemy
 function ApplyDamage()
 {
     chaseRange += 30;
     moveSpeed += 2;
     lookAtDistance += 40;
 }
 
help.png (235.5 kB)
Comment
Add comment · Show 1
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 ALEGOMan · Dec 23, 2014 at 09:25 PM 0
Share

Thanks for the help, it was actually -z forward +y up !(only slight problem now is that the character seems to not be looking precisely at the player(looking off the right) i'm not sure what would solve that. alt text

help2.png (98.5 kB)

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by jmgek · Dec 23, 2014 at 09:39 PM

(-z) is forward in unity. I would change it in maya because you don't want to rely on code to change the transforms of objects, you can really mess others up and yourself in the future. A little advice for you, try passing out arguments so you can start making more robust code.

     function lookAt(Transform anyPositionToLookAt)
      {
          //renderer.material.color = Color.yellow;
          var rotation = Quaternion.LookRotation(anyPositionToLookAt.position - transform.position);
          transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
      }
 
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 ALEGOMan · Dec 24, 2014 at 12:56 AM 0
Share

alt text It's facing the right way, but it is always looking slightly off center, my player is a capsule and it seems to be facing the bottom left of the capsule in the scene view...

help2.png (98.5 kB)
avatar image Srki94 · Dec 24, 2014 at 01:21 AM 0
Share

Z is forward in Unity and to actually apply it in Blender (even if you have it as export setting) you have to use "Apply transform" from Blender. Anyway, you have that figured out I can see.

So I would check next thing - transform and your camera. Even tho your transform of player is a capsule, camera may be off for some reason and char is actually looking at it properly but you don't see that (because char doesn't care about camera but rather transform) Try to use transform of hands maybe?.

Try with other object as well, to make sure that problem is not with model itself.

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

Enemy doesn't face player 0 Answers

Load 3D models without AssetBundles? 2 Answers

Blender Shape not detected by Unity 0 Answers

3D Menu Help 1 Answer

Slenderman script problem 5 Answers


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