- Home /
Aimming zoom problem
I am making a first person shooter survival game and I am tring to add aimming by togaling a gameobject which is a camera which perants a clone of the weopon lined up to the iron sights (ads problem editor) and togaling the original camera game object of however when i play the weopon changes place back to the hip fipre position relative to the camera (ads probelm test) of which i have no idea why
this is my code for the gun;
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;
public class Gun : MonoBehaviour { // variables public int maxAmmo = 30; public float damage = 10f; public float range = 100f; public float impactForce = 30f; public float fireRate = 15f; private int ammo; public float reloadSpeed = 1.5f; public bool ableToFire = true; public bool reloading = false; public bool aim = false; private float nextTimeToFire = 0f; // the timming for the charging handle slide end public float EjectionAnimSlide; //velocities the speed at which the bullet travels and how fast the shell is ejjected public float bulletVelocity = 5f; //decay speed will improve performance the lower it is public float bulletDecaySpeed = 10f; public float shellDecaySpeed = 5f;
// references
public Camera fpsCam;
public ParticleSystem muzzleFlash;
public GameObject impactEffect;
public Text ammoDisplay;
public GameObject reload;
public ParticleSystem Bullet;
public ParticleSystem Shell;
public AudioSource Fire;
public AudioSource Casing;
Animator animator;
void Start()
{
animator = GetComponent<Animator>();
ammo = maxAmmo;
reload.SetActive(false);
}
// Update is called once per frame
void Update()
{
ammoDisplay.text = ammo.ToString();
if (Input.GetButton("Shoot") && Time.time >= nextTimeToFire && ammo > 0 && ableToFire == true && aim == false)
{
nextTimeToFire = Time.time + 1f / fireRate;
ammo -= 1;
//this is calling the shoot and also the bullet and shell graphics
Shoot();
}
if (Input.GetKeyDown(KeyCode.R))
{
animator.SetBool("reload", true);
reloading = true;
ammo = 0;
ableToFire = false;
StartCoroutine(Reload());
}
if (reloading == true)
{
reload.SetActive(true);
}
if (reloading == false)
{
reload.SetActive(false);
}
}
// this is the raycast for shooting and some of the graphics
void Shoot()
{
muzzleFlash.Play();
Bullet.Play();
ShellControl();
ShellPort();
Fire.Play();
RaycastHit hit;
if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
{
Debug.Log(hit.transform.name);
Enemy enemy = hit.transform.GetComponent<Enemy>();
if (enemy != null)
{
enemy.TakeDamage(damage);
}
if (hit.rigidbody != null)
{
hit.rigidbody.AddForce(-hit.normal * impactForce);
}
// the hit graphics for when the raycast/bullet makes contact
GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(impactGO, 2f);
}
}
void ShellPort()
{
animator.SetBool("shellEjection", true);
StartCoroutine(shellanimend());
}
void ShellControl()
{
Shell.Play();
StartCoroutine(casingTimming());
}
// the IEnumarators for timings within the code
IEnumerator Reload()
{
yield return new WaitForSeconds(reloadSpeed);
ammo = maxAmmo;
ableToFire = true;
reloading = false;
animator.SetBool("reload", false);
}
IEnumerator casingTimming()
{
yield return new WaitForSeconds(0.5f);
Casing.Play();
}
IEnumerator shellanimend()
{
yield return new WaitForSeconds(EjectionAnimSlide);
animator.SetBool("shellEjection", false);
}
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Drawing Handles 1 Answer
in-Game camera movement like editor 3 Answers
Why does Viking Village Water move with camera in Editor? 0 Answers