Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
13 Jun 22 - 14 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 somerandomhacker · Feb 04 at 11:22 PM · rotationbulletgun script

My bullet isn't facing the correct way when I shoot it out of my gun. Help!

When I shoot a bullet out of my gun, the bullet will always have the rotation 0 on all axes. Here is my gun script: using UnityEngine; using TMPro; public class GunSystem : MonoBehaviour { //bullet public GameObject bullet; //bullet force public float shootForce, upwardForce; //Gun stats public float timeBetweenShooting, spread, reloadTime, timeBetweenShots; public int magazineSize, bulletsPerTap; public bool allowButtonHold; int bulletsLeft, bulletsShot; //Recoil public Rigidbody playerRb; public float recoilForce; //bools bool shooting, readyToShoot, reloading; //Reference public Camera fpsCam; public Transform attackPoint; //Graphics public GameObject muzzleFlash; public TextMeshProUGUI ammunitionDisplay; //bug fixing :D public bool allowInvoke = true; private void Awake() { //make sure magazine is full bulletsLeft = magazineSize; readyToShoot = true; } private void Update() { MyInput(); //Set ammo display, if it exists :D if (ammunitionDisplay != null) ammunitionDisplay.SetText(bulletsLeft / bulletsPerTap + " / " + magazineSize / bulletsPerTap); } private void MyInput() { //Check if allowed to hold down button and take corresponding input if (allowButtonHold) shooting = Input.GetKey(KeyCode.Mouse0); else shooting = Input.GetKeyDown(KeyCode.Mouse0); //Reloading if (Input.GetKeyDown(KeyCode.R) && bulletsLeft < magazineSize && !reloading) Reload(); //Reload automatically when trying to shoot without ammo if (readyToShoot && shooting && !reloading && bulletsLeft <= 0) Reload(); //Shooting if (readyToShoot && shooting && !reloading && bulletsLeft > 0) { //Set bullets shot to 0 bulletsShot = 0; Shoot(); } } private void Shoot() { readyToShoot = false; //Find the exact hit position using a raycast Ray ray = fpsCam.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0)); //Just a ray through the middle of your current view RaycastHit hit; //check if ray hits something Vector3 targetPoint; if (Physics.Raycast(ray, out hit)) targetPoint = hit.point; else targetPoint = ray.GetPoint(75); //Just a point far away from the player //Calculate direction from attackPoint to targetPoint Vector3 directionWithoutSpread = targetPoint - attackPoint.position; //Calculate spread float x = Random.Range(-spread, spread); float y = Random.Range(-spread, spread); //Calculate new direction with spread Vector3 directionWithSpread = directionWithoutSpread + new Vector3(x, y, 0); //Just add spread to last direction //Instantiate bullet/projectile GameObject currentBullet = Instantiate(bullet, attackPoint.position, Quaternion.identity); //store instantiated bullet in currentBullet //Rotate bullet to shoot direction currentBullet.transform.forward = directionWithSpread.normalized; //Add forces to bullet currentBullet.GetComponent<Rigidbody>().AddForce(directionWithSpread.normalized * shootForce, ForceMode.Impulse); currentBullet.GetComponent<Rigidbody>().AddForce(fpsCam.transform.up * upwardForce, ForceMode.Impulse); //Instantiate muzzle flash, if you have one if (muzzleFlash != null) Instantiate(muzzleFlash, attackPoint.position, Quaternion.identity); bulletsLeft--; bulletsShot++; //Invoke resetShot function (if not already invoked), with your timeBetweenShooting if (allowInvoke) { Invoke("ResetShot", timeBetweenShooting); allowInvoke = false; //Add recoil to player (should only be called once) playerRb.AddForce(-directionWithSpread.normalized * recoilForce, ForceMode.Impulse); } //if more than one bulletsPerTap make sure to repeat shoot function if (bulletsShot < bulletsPerTap && bulletsLeft > 0) Invoke("Shoot", timeBetweenShots); } private void ResetShot() { //Allow shooting and invoking again readyToShoot = true; allowInvoke = true; } private void Reload() { reloading = true; Invoke("ReloadFinished", reloadTime); //Invoke ReloadFinished function with your reloadTime as delay } private void ReloadFinished() { //Fill magazine bulletsLeft = magazineSize; reloading = false; } } Sorry in advance is this is painfully obvious, I am new to C# and copied it from a tutorial. Thanks!

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

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

179 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

Related Questions

Bullet flies away for no apparent reason. 1 Answer

Rotation Problem ( X , Y , Z ) 1 Answer

Turret bullet rotation problem 1 Answer

Problem with bullet not rotating with gun 3 Answers

Bullets aren't firing / Bullet holes not instantiating correctly 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