Hey community, i have a weird situation in my source code.
The first problem is, that i can’t seem to find the player with the GameObject.FindGameObjectWithTag(“Player”). There is definitly a gameobject with that tag and other objects seem to find it without a problem but somehow this one doesn’t.
The second one is that the ‘fireRateTimer’ in the ‘void fire(…)’ is always set to 0.5f. I can see that the fireRateTimer changes in the inspector but when i try to access it in the fire method it is always 0.5.
BulletWeapon.cs :
using UnityEngine;
using System.Collections;
using System;
public class BulletWeapon: IWeapon {
public float basicFirerate = 0.5f; // Firerate in seconds
public float firerate;
public float maxFirerate = 0.1f;
public float projectileSpeed = 10;
public float fireRateTimer;
public GameObject bullet;
public GameObject player;
private PlayerControlls playerSkript;
// Use this for initialization
void Start () {
bulletType = BulletType.CLASSICBULLET;
player = GameObject.FindGameObjectWithTag("Player");
firerate = basicFirerate;
fireRateTimer = firerate;
}
// Update is called once per frame
void Update () {
if (!isPause) {
fireRateTimer -= Time.deltaTime;
}
}
public override void fire(Vector3 v) {
if (!isPause) {
Vector2 target = Camera.main.ScreenToWorldPoint(new Vector2(Input.mousePosition.x, Input.mousePosition.y));
Vector2 myPos = v; // new Vector2(player.transform.position.x, player.transform.position.y);
Vector2 direction = target - myPos;
direction.Normalize();
Quaternion rotation = Quaternion.Euler(0, 0, Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg);
if (fireRateTimer <= 0) {
Debug.Log("wtf");
GameObject classicProjectile = (GameObject)Instantiate(bullet, myPos, rotation);
classicProjectile.GetComponent<Rigidbody2D>().velocity = direction * projectileSpeed;
fireRateTimer = firerate;
} else if (fireRateTimer > 0) {
Debug.Log("firerate > 0 it is : " + fireRateTimer);
}
}
}
public override void upgrade() {
throw new NotImplementedException();
}
}
and this is the class that the bulletweapon inherits from:
using UnityEngine;
using System.Collections;
public enum BulletType {
CLASSICBULLET, LASER
}
public abstract class IWeapon: MonoBehaviour {
protected bool isPause;
public BulletType bulletType;
public abstract void fire(Vector3 v);
public abstract void upgrade();
public void pause() {
isPause = true;
}
public void unPause() {
isPause = false;
}
}