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 /
avatar image
0
Question by putlucky · Apr 15, 2017 at 12:02 PM · c#physicsprefabvelocityprojectile

Projectile isn't reaching my target.

So I've taken some code from a unity answers post that aims to fire a projectile in an arc towards target location. Unfortunately/fortunately none of the posters there seem to be having this problem.

    private Vector3 BallisticVel(Transform target)
     {
         var dir = target.transform.position - transform.position;
         var height = dir.y; //Calculate height difference. 
         dir.y = 0;
         var dist = dir.magnitude; //Get horizontal distance.
         dir.y = dist; //Set elevation to 45 degrees. 
         dist += height; //Correct for different heights. 
         var velocity = Mathf.Sqrt(dist + Physics.gravity.magnitude);
 
         return velocity * dir.normalized;
     }
     
     // Update is called once per frame
     void Update () {
         attackSpeed -= Time.deltaTime;
 
         //After x amount of time, apply damage.
         if (attackSpeed <= 0)
         {
             //fire projectile, when it reaches the target then do this other stuff. 
 
             GameObject arrowInstance = Instantiate(arrow, transform.position, transform.rotation) as GameObject;
             Rigidbody projectile = arrowInstance.GetComponent<Rigidbody>();
 
             projectile.velocity = BallisticVel(enemy.transform);
 
             if (ac.struck == true)
             {
                 Debug.Log("Struck!");
             }
             else { Debug.Log("Missed!"); }
             //CombatAnimation();
             attackSpeed = 2.0f;
 
         }
 
 
     }

While the projectile fires in the right direction, it only makes it about a two units away from the point of instantiation before landing. It's a ways off.

I didn't write the BallisticVel code and I have only a basic understanding of how it works (my physics is terrible), so I was wondering if anyone knows what might be the cause?

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

Answer by RibsNGibs · Apr 15, 2017 at 01:35 PM

I was so skeptical that that ballistic math could have worked out so nicely, with only a square root and no other squares or other things that I worked it out (well, not with the height adjustment, but just where the target is at the same height, and I think you made a mistake - the velocity should be sqrt(dist * gravity), not "+".

As a side note, how elegant that an angle of 45 degrees yields such a simple velocity calculation! Pretty cool.

Comment
Add comment · 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

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

7 People are following this question.

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

Related Questions

Reducing rounding errors in my physics solvers 0 Answers

Problem Trying to Apply Non-Kinematic Velocity to Rigidbody 0 Answers

Multiple Cars not working 1 Answer

Need some help with firing projectile at player using Rigidbody Velocity 1 Answer

Using Lerp in a Constant Moving Object 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