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 Sauceuke · Apr 09, 2021 at 03:53 PM · animation2d sprites2d animationisometric2d rotation

How to keep Diagonal Movement Direction in 2D Isometric game?

Hello! I'm current making a simple 2D Isometric game and I've made a movement script with correlating animations. I'm using a nested blend tree to determine the direction im going and how fast I'm going. If my current player speed is >0 then the walking animation triggers. If the current player speed is 0 I play the idle animation. This all works perfectly fine, the only issue is that when I move diagonally my diagonal position isn't held. I believe this is because I use WASD to determine Input and was I press "W+D" to move up and to the right for example, it well sometimes make my idle right facing animation play instead of my up right animation play. I'm thinking that I would need to store my current direction I'm facing or I would need to create a bool to check if I'm diagonal but I'm really unsure. Please let me know if you have any idea's or suggestions! Thank you in advance.!

Code -----alt text

 private float baseMoveSpeed = 5;
 public float dashDistance = 5;
 private Vector3 playerPos;
 public string prevMoveDir;
 private Rigidbody2D rigidbody2D;
 private Vector3 moveDir;
 public bool isDashing;
 public bool isRunning;
 public Animator animator;
 public Vector2 animatorMoveDirection;
 public float animatorMoveSpeed;
 // Start is called before the first frame update
 private void Awake()
 {
     rigidbody2D = GetComponent<Rigidbody2D>();
 }
 void Start()
 {
     playerPos = transform.position;

 }

 // Update is called once per frame
 void FixedUpdate()
 {
       //speed = moveX + moveY;
       rigidbody2D.velocity = moveDir * baseMoveSpeed;
       if(isDashing)
       {
           rigidbody2D.MovePosition(transform.position + moveDir * dashDistance);
           isDashing = false;
       }
       if(isRunning)
       {
           rigidbody2D.velocity = moveDir * (baseMoveSpeed * 1.5f);
           isRunning = false;
       }
 }


 private void Update()
 {
     float moveX = 0;
     float moveY = 0;
     if (Input.GetKey(KeyCode.W)) // Get key down used for single press and not constant pressing
     {
         moveY += 1f;
     }
     if (Input.GetKey(KeyCode.S)) // Get key down used for single press and not constant pressing
     {
         moveY -= 1f;
     }
     if (Input.GetKey(KeyCode.D)) // Get key down used for single press and not constant pressing
     {
         moveX += 1f;
     }
     if (Input.GetKey(KeyCode.A)) // Get key down used for single press and not constant pressing
     {
         moveX -= 1f;
     }
     if (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.LeftShift)) // Get key down used for single press and not constant pressing
     {
         moveY += 1f;
         isRunning = true;
     }
     if (Input.GetKey(KeyCode.S) && Input.GetKey(KeyCode.LeftShift)) // Get key down used for single press and not constant pressing
     {
         moveY -= 1f;
         isRunning = true;
     }
     if (Input.GetKey(KeyCode.D) && Input.GetKey(KeyCode.LeftShift)) // Get key down used for single press and not constant pressing
     {
         moveX += 1f;
         isRunning = true;
     }
     if (Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.LeftShift)) // Get key down used for single press and not constant pressing
     {
         moveX -= 1f;
         isRunning = true;
     }
     if (Input.GetKeyDown(KeyCode.Space))
     {
         isDashing = true;
     }
     moveDir = new Vector3(moveX, moveY).normalized;
     animatorMoveDirection = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")).normalized;
     animatorMoveSpeed = animatorMoveDirection.magnitude;
     Animate();
 }
 void Animate()
 {
     if(animatorMoveDirection != Vector2.zero)
     {
             animator.SetFloat("Horizontal", animatorMoveDirection.x);
             animator.SetFloat("Vertical", animatorMoveDirection.y);
     }
     animator.SetFloat("Speed", animatorMoveDirection.magnitude);
 }

}

unity-help-1.png (73.4 kB)
unity-help-2.png (217.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 logicandchaos · Apr 11, 2021 at 04:55 PM 0
Share

I would just store the direction, you could store it as a normalized vector even. or just an int, 0-7, or an enum for readability..

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

291 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 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 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 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 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 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 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

Why can't you use the bone influence tool in the Sprite Skinning Editor? 0 Answers

help with freezing 2D sprite rotation 2 Answers

4 direction animation unity 2d 3 Answers

[2D] Unity Animation and CPU usage of EXE. Best way to do? 0 Answers

Problem with 2D gun rotation script (Would really apreaciate help) 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