我真的需要一些帮助,我GameObjects。
我的工作在游戏中,我想接机项目创建一个物理力爆炸炸毁了敌人。我做了一个简单的炸弹对象,以测试这个想法。我添加了一个简单的代码,使用循环收集半径内的所有对撞机,到随后addForce这些对撞机。现在,代码可以正常工作,但并不是我的所有GameObject都能正常工作。
我调查了这是为什么,并且我注意到,一旦向对象添加RigidBody组件,对撞机就会不断从GameObject掉落。需要使用AddForce影响刚体。当我移除rb时,对撞机将留在原处,但该对象不会对Physics Force产生反应。
我添加了一些图像来说明我的意思:
Image of the Collider of the leaf sinking away..
Example image of objects which DO react to the AddForce.
我已经尝试过:
下面添加了“爆炸代码”,但是我认为问题不在代码中。我将代码添加到场景的“主摄像机”中,并添加了一个简单的球体作为“炸弹” 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
}
}
}
}
如何使叶子的刚体,对撞机和GameObject像标准3D对象“多维数据集”那样相互紧握,以便像其他模型一样可以被Physics Force吹走?
感谢您的时间,我一直在努力的事情,现在环顾互联网上几个小时,但似乎无法找到任何解决方案。
答案 0 :(得分:0)
如果在停止模式下添加刚体并按play,会发生什么?它会以类似的方式移动吗?如果您的对撞机相交,则可能会发生这种情况。一旦添加刚体,它们就会陷入严重的碰撞中。
如果您不想修改场景,则可以在项目设置/物理学中修改碰撞矩阵