En este momento estás viendo Al disminuir en 1, la unidad disminuye en un número aleatorio

 – Unity

Al disminuir en 1, la unidad disminuye en un número aleatorio – Unity

Al disminuir en 1, la Unity disminuye en un número aleatorio

– UnityAssets3Free

buenas , por aqui josel luis y para hoy os traigo
esta unity pregunta

Estoy tratando de hacer un juego FPS en Unity y configuré un sistema de disparo RayCast. Cada vez que disparo, establezco dónde debe disminuir el conteo de munición del arma en 1. Sin embargo, cada vez que hago clic con el botón izquierdo, disminuye el conteo de munición en un número aleatorio y no tengo idea de por qué. El contador baja en 8, en 12, en 10, 9, solo números enteros al azar. Solo debería estar disminuyendo en 1, ¿verdad?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Gun : MonoBehaviour

    public int id;
    float nextTimeToFire;
    
    [SerializeField] int currAmmo;
    float reloadSpeed = 1;
    
    public GameObject gameController;
    public ItemDatabase database;
    
    public Camera mainCam;
    
    void Start()
    
        gameController = GameObject.FindGameObjectWithTag ("GameController");
        database = gameController.GetComponent<ItemDatabase> ();
        mainCam = Camera.main;
        id = GetComponent<ItemID> ().itemID;
        
        currAmmo = database.weapons[id].maxAmmo;
    
    
    void Update()
       
        if(currAmmo <= 0)
        
            StartCoroutine(Reload());
            return;
        
        
        if(Input.GetButton("Fire1") && Time.time >= nextTimeToFire)
        
            Shoot();
        
    
    
    
    void Shoot()
    
        currAmmo--;
        
        RaycastHit hit;
        if(Physics.Raycast(mainCam.transform.position, mainCam.transform.forward, out hit, database.weapons [id].range))
        
            nextTimeToFire = Time.time + 1f/database.weapons [id].fireRate;
            if (hit.transform.tag == "Enemy")
            
                Debug.Log (hit.transform.name);             
                CharacterStats enemyStats = hit.transform.GetComponent<CharacterStats> ();
                enemyStats.TakeDamage (database.weapons [id].damage);
                Debug.Log (database.weapons [id].damage);
            
            
        
    
    
    IEnumerator Reload()
    
        yield return new WaitForSeconds (reloadSpeed);
        
        currAmmo = database.weapons [id].maxAmmo;
    

1 respuesta 1

Parece que está mostrando el recuento de munición de una base de datos. El código aquí debería disminuir el índice en 1, por lo que ha verificado los índices de la base de datos. Podría ser el problema de que el conteo de munición en la base de datos esté fuera de servicio. Pero mi opinión…

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

eso es todo,espero que te funcione

Deja una respuesta