@Ad1yar

Как пульнуть обекь в Unity?

Как при спавне объекта пульнуть его через Rigidbody? Я попытался что-то сделать но не получилось(

Код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BallSpawner : MonoBehaviour
{
    public Transform spawn1;
    public Transform spawn2;
    public Transform spawn3;
    public GameObject ball;

    private int num;
    private float ballSpeed = 500f;

    IEnumerator Spawn()
    {
        while (true)
        {
            yield return new WaitForSeconds(3);
            num = Random.Range(0, 4);
            num = (int) num;
            yield return new WaitForSeconds(0.001f);
            num = 0;
        }
    }

    void Start()
    {
        StartCoroutine(Spawn());
    }

    void Update()
    {
        CheckNum();
    }

    void CheckNum()
    {
        if (num == 1)
        {
            Instantiate(ball, spawn1.position, Quaternion.identity);

            ball.GetComponent<Rigidbody>().AddForce(new Vector3(1f, 1f, 1f) * ballSpeed);
        }

        if (num == 2)
        {
            Instantiate(ball, spawn2.position, Quaternion.identity);

            ball.GetComponent<Rigidbody>().AddForce(new Vector3(1f, 1f, 1f) * ballSpeed);
        }

        if (num == 3)
        {
            Instantiate(ball, spawn3.position, Quaternion.identity);

            ball.GetComponent<Rigidbody>().AddForce(new Vector3(1f, 1f, 1f) * ballSpeed);
        }
    }
}
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
Возможно, вы так и задумывали, но если нет, то в строке:
num = Random.Range(0, 4);
У вас генерируются числа от 0 до 3 включительно, но число 0 не обрабатывается методом спавна.

Затем удалите следующие три строки:
num = (int) num;
yield return new WaitForSeconds(0.001f);
num = 0;


В первой вы делаете бесполезный каст int в int. Затем вы вызываете паузу, столь малую, что она, почти гарантированно сработает раньше следующего обновления экрана. Последняя же строка поставит номер спаунера на ноль - число, которое вы не обрабатываете в коде спавна ниже.

Если не помогло - пишите в коменты, будем разбираться дальше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы