For some reason my grenade doesn't initialize

Viewed 31

I have 2 issues. (1) For some reason my grenade doesn't initialize. (2) Transform.LookAt(Player) doesn't work. I am trying to have a floating monster that will throw grenades. I know that the IEnumerator runs (I put a debug.Log) so I know that the grenade issue isn't because it doesn't run. I am unsure why the transform.Lookat doesn't work though. Thanks for the help!

Script: (Sorry if the code is bad I am a programming noob)

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

public class ZKAttack_lvl3 : MonoBehaviour
{
    public Transform Player;
    public float MoveSpeed = 3.5f;
    public float InRadius = 4.0f;
    public float AttackRange = 1.0f;

    private Coroutine hasCourutineRunYet;

    public GameObject grenade;
    public GameObject FloatingMonster;

    private Animator anim;
    private Rigidbody rigid;

    private void Start()
    {
        anim = GetComponent<Animator>();
        Player = GameObject.FindGameObjectsWithTag("Player")[0].transform;

        rigid = GetComponent<Rigidbody>();
        
    }

    void Update()
    {
        transform.LookAt(Player);

        float dstSqr = (Player.position - transform.position).sqrMagnitude;
        bool inRadius = (dstSqr <= InRadius * InRadius);
        bool inAttackRange = (dstSqr <= AttackRange * AttackRange);
        anim.SetBool("inRadius", inRadius);
        anim.SetBool("AttackingPlayer", inAttackRange);
        if (inRadius)
        {
            transform.position += transform.forward * MoveSpeed * Time.deltaTime;
        }

        rigid.AddForce(1, 10, 1);

        if (inAttackRange)
        {
            if (hasCourutineRunYet == null)
            {
                hasCourutineRunYet = StartCoroutine(GrenadeAttack());
            }
        }
    }

    IEnumerator GrenadeAttack()
    {
        GameObject bulletObject = Instantiate(grenade);
        bulletObject.transform.position = FloatingMonster.transform.position + FloatingMonster.transform.forward;
        bulletObject.transform.forward = FloatingMonster.transform.forward;

        yield return new WaitForSeconds(2.0f);
    }
}
1 Answers

I discovered the reason for it not initializing is because of the line bulletObject.transform.forward = FloatingMonster.transform.forward; . I assume that this somehow obstructed it.

Related