Мне действительно может понадобиться помощь с моими GameObjects.
Я работаю над игрой, в которой я хочу получить предмет, чтобы создать взрыв Силы Физики, чтобы сразить врагов.Я сделал простой Bomb-Object, чтобы проверить эту идею.Я добавил простой код, используя цикл для сбора всех коллайдеров в пределах его радиуса, чтобы затем добавить Forcece к этим коллайдерам.Теперь код работает правильно, но не все мои объекты GameObject реагируют правильно.
Я выяснил, почему это так, и заметил, что мой коллайдер продолжает отвлекаться от GameObject, как только я добавляю компонент RigidBody впредмет.RigidBody необходим для воздействия AddForce.Когда я удаляю rb, коллайдер остается на месте, но объект не реагирует на Силу Физики.
Я добавил несколько изображений, чтобы проиллюстрировать, что я имею в виду:
Изображениеколлайдер из листьев тонет вдали ..
Пример изображения объектов, которые ДЕЙСТВИТЕЛЬНО реагируют на AddForce.
Я уже пытался:
- Скопируйте / вставьте все настройки компонентов из реагирующих игровых объектов «Куб» и «камень» в конечный игровой объект, отключив при этом весь другой код, такой как сценарии c #.Коллайдер и РБ не падают сквозь пол, но когда Физическая сила попадает в Коллайдер, он уносится, пока GameObject сохраняет свою позицию.
- Попробуйте разные типы GameObjects / Collider.
- Удалена вода.
- Играйте с количеством силы / радиуса бомбы.
- Отредактированы «Tag» и «Layerstyle» GameObject.
«Код взрыва» добавлен ниже, однако я не думаю, что проблеманаходится в коде.Я добавил код в основную камеру своей сцены и добавил простую сферу как GameObject «бомба».
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Explosion : MonoBehaviour
{
public GameObject bomb; //set the position of the explosion
public float power = 10.0f;
public float radius = 10.0f;
public float upForce = 0.0f;
private void FixedUpdate()
{
if (Input.GetKeyDown("space"))
{
print("space key was pressed");
Invoke("Detonate", 1);
}
}
void Detonate()
{
Vector3 explosionPosition = bomb.transform.position; //set the position of our explosion to the position of the bomb.
Collider[] colliders = Physics.OverlapSphere(explosionPosition, radius); //collects all colliders within the radius.
foreach (Collider hit in colliders) { //for each individual collider the following code is ran.
Rigidbody rb = hit.GetComponent<Rigidbody>(); //declare'rb' rigidbody. Get rb component from each collider
if (rb != null)
{
print("BOOM!");
rb.AddExplosionForce(power, explosionPosition, radius, upForce, ForceMode.Impulse); //add force to each collider
}
}
}
}
Как сделать так, чтобы Rigidbody, Collider и GameObject листа держались друг на друге, как стандартный трехмерный объект «куб», чтобы я мог сделать этиСразитесь с Физической Силой, как и с другими моделями?
Спасибо, что уделили время, я часами пробовал разные вещи и смотрю в Интернете, но, похоже, не могу найти никакого решения.