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
1
Question by Boog1eMan · Oct 06, 2012 at 10:01 AM · rotationpatharrowfly

Firing arrows (FPS): few problems.

Hello! I recently started to play around with unity a bit and decided to make a shooting script for arrows. The problem is that the arrows start at the wrong rotation. The arrow is pointing towards the camera. (tried rotating the model i made in 3ds max then re import it to unity and rotating normally in unity).

The second bug i have is that when i look at over 45ish degree angle and shoot, the arrows hit something invisible (at least it looks like that) and their fly path is screwed up (using First Person Controller from Standard Assets).

Heres the shooting script:

 var prefabBullet:Transform;
 var shootForce:float;
 function Update () 
 {
     if(Input.GetButtonDown("Fire1"))
     {
         
         var instanceBullet = Instantiate(prefabBullet, transform.position, transform.rotation);
         
         instanceBullet.rigidbody.AddForce(camera.transform.forward * shootForce);
     }
 
 }

Heres the arrow script:

 var destroyTime : float;
 
 function Start()
 {
 yield WaitForSeconds(destroyTime);
 Destroy(gameObject);
 
 
 }
 
 function Update () 
 {
     transform.forward =
     Vector3.Slerp(transform.forward, rigidbody.velocity.normalized, Time.deltaTime); 
 }
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

2 Replies

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by aldonaletto · Oct 06, 2012 at 11:20 PM

Imported models with wrong axes are more the rule than the exception - and the usual solution is to create an empty object (the arrow) and child the arrow model to it, aligning the model the way you want. The empty object is in fact the arrow, thus you should add a rigidbody and a long and thin box collider to it, as well as the arrow script. When the arrow object is ok, drag it to the project view to make it a prefab, and assign it to the prefabBullet variable in the Inspector.
Another hint: Destroy has an optional delay parameter, thus you don't need to use WaitForSeconds:

 function Start(){
   Destroy(gameObject, destroyTime);
 }

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
avatar image
0

Answer by Boog1eMan · Oct 11, 2012 at 06:53 PM

Thanx! That worked. It fixed both the rotation problem and the "hitting something ivnvisible" problem aswell, so now i can shoot the arrows at higher angles.

I cant jump and shoot at the same time, because the model spawns inside the player... I need to make it so that it has small offset. So that the arrow spawns in front of the player... Im currently using transform.position in my instantiate command. How would i add this offset to it?

The arrows try rotate after they're on the ground. Is there a way to turn the script off when a the arrows velocity drops below a certain point? or pehaps some better way to fix that?

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

10 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

Related Questions

Character Controller slides sideways when it hits objects are angles different from 90 degrees 1 Answer

Make UI compass point to 3D object 4 Answers

How do I create a solid GameObject (arrow) made out of multiple child objects (head, shaft, fletching)? 0 Answers

Flip over an object (smooth transition) 3 Answers

Preventing "LookAt" from flipping? 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