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 /
  • Help Room /
avatar image
0
Question by johnnydev1 · Feb 16, 2016 at 07:50 PM · 2d gameshootingfollow player

2D Gun following rotation problem

I'm trying to implement an enemy that patrols left and right, changes direction when it hits specific invisible checkpoints. The enemies have a child gun object that follows the player spaceship and fires when in range. This works fine until the enemy hits the their checkpoint and change the transform.localscale direction. The following attached gun that "follows" the player inverts it's direction until it once again changes direction back to original. End result is that when enemy moves right, it follows perfectly, when it moves left, it's follow inverts.

Enemy Move Script:

 public class enemypatrol : MonoBehaviour {
 
     public float moveSpeed;
     public bool moveRight;
     Rigidbody2D enemyrb2d;
 
     public Transform wallCheck;
     public float wallCheckRadius;
     public LayerMask whatIsWall;
     public bool hittingWall;
 
     // Use this for initialization
     void Start () {
         moveRight = true;
         enemyrb2d = GetComponent<Rigidbody2D>();
     }
     
     // Update is called once per frame
     void Update () {
 
         hittingWall = Physics2D.OverlapCircle(wallCheck.position, wallCheckRadius, whatIsWall);
 
         if (hittingWall)
         {
             moveRight = !moveRight;
         }
 
         if (moveRight)
         {
             transform.localScale = new Vector3(1f, 1f, 1f);
             enemyrb2d.velocity = new Vector2(moveSpeed, enemyrb2d.velocity.y);
         }
         else {
             transform.localScale = new Vector3(-1f, 1f, 1f);
             enemyrb2d.velocity = new Vector2(-moveSpeed, enemyrb2d.velocity.y);
         }
     }

Gun Rotation Script

 public class gunrotation : MonoBehaviour {
 
     public Transform target;
     public int rotationOffset = -90;
 
     // Use this for initialization
     void Start () {
     
     }
     
     
     void Update () {
         Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
         
         Vector3 difference = target.position - transform.position;
         
         float rotZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;  
         
         transform.rotation = Quaternion.Euler(0f, 0f, rotZ + rotationOffset);
         
     }
Comment
Add comment · Show 3
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 Taxen0 · Feb 16, 2016 at 09:42 PM 0
Share

Cant you change direction without changing local scale? That is what makes you have this issue

avatar image johnnydev1 Taxen0 · Feb 17, 2016 at 01:03 AM 0
Share

Yes that solves the gun rotation problem. $$anonymous$$y enemy sprite isn't flipping to face other direction in that case which I'll have to fix somehow

avatar image Taxen0 johnnydev1 · Feb 17, 2016 at 09:18 PM 0
Share

There might be some other clever way of doing this but the easiest would be ta make 2 animations. One moving right and one moving left and use the animation system to change the states.

This way you change the actual image and not the transform

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

45 People are following this question.

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

Related Questions

Player Respawn Problem, Bullets dont move! [C#] 0 Answers

Shoot at mouse cursor 0 Answers

2D shooting script fixed camera 2 Answers

how do i make my immovable 'empty gameobject spawnpoint' shoot bullets in the direction of my crosshair? 0 Answers

Shooting animation and bullet generation issue 0 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