Привет всем У меня есть небольшая проблема с моим сценарием стрельбы из лука.Я имею в виду, что хочу стрелять, когда играю один из последних кадров из моей анимации.Я пытаюсь сделать это, установив FirePoint GameObject, поместив его, записав его на вкладке «Анимация» в нужном кадре.Конечно, он отключен, но включен при воспроизведении анимации, а затем снова отключен.Итак, проблема в том, что: - когда я нажимаю кнопку, соответствующую моему входу в Shooting, анимация воспроизводится, - появляется My Instantiate, и он выдает несколько стрелок, - когда он отключен, он перестает генерировать стрелки.
Я хочу произвеститолько одна стрелаМожет ли кто-нибудь помочь?
CombatScript.cs:
/* private bool shootBow;
* public bool needReload = false;
* public float reloadTime = 1.5f;
* public float realoadCD;
*/
public void RangeAttack()
{
if (needReload == false && gameObject.GetComponent<PlayerControls>().grounded == true && Input.GetButtonDown("Ranged"))
{
animator.SetTrigger("shootBow");
attack1 = false; // Melle attacks sets to false in case of lag or smth.
attack2 = false;
attack3 = false;
needReload = true;
if (needReload == true)
{
reloadCD = reloadTime;
}
}
if (reloadCD > 0 && needReload == true)
{
reloadCD -= Time.deltaTime;
}
if (reloadCD <= 0)
{
reloadCD = 0;
needReload = false;
}
if (firePoint.gameObject.activeSelf == true)
{
Instantiate(Missile, new Vector3(firePoint.position.x + 1, firePoint.position.y), firePoint.rotation);
Debug.Log("It's a bird, a plane, no.. it's arrow.");
}
}
Arrow Controller.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ArrowController : MonoBehaviour {
public float speed;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
GetComponent<Rigidbody2D>().velocity = new Vector2(speed, GetComponent<Rigidbody2D>().velocity.y);
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Enemy")
{
Destroy(collision.gameObject);
}
Debug.Log("Arrow Broke");
Debug.Log(gameObject.name);
//Destroy(gameObject);
}
public void OnCollisionEnter2D(Collision2D collision)
{
}
}
Пример моей ситуации:
![Example of my situation](https://i.stack.imgur.com/BSbH7.png)
Пример истинного / ложного оператора needReload:
![Example of true/false needReload statement](https://i.stack.imgur.com/pXOhF.gif)
в правом Инспекторе у вас есть информация о моем Игроке, в левом (или нижнем) Инспекторе у вас есть Инспектор Ракет (Стрелок)