为什么AddExplosionForce在我的代码中不起作用?

时间:2019-03-26 02:12:05

标签: c# unity3d

此代码有什么问题?当我发射火箭时,它不会影响角色。

我曾经尝试过在其他地方寻找东西,但没有任何帮助。我已经获得了帮助,因此至少现在代码可以实际运行。

using UnityEngine;
using System.Collections;

public class Rocket : MonoBehaviour
{
    //Public changable things
    public float speed = 20.0f;
    public float life = 5.0f;
    public float explosionForce = 1.0f;
    public float explosionRadius = 1.0f;
    public bool isGrounded;

    public Rigidbody rb;
    // Use this for initialization
    void Start()
    {
        Invoke("Kill", life);
    }

    // Update is called once per frame
    void Update()
    {
        transform.position += transform.forward * speed * Time.deltaTime;

        if (isGrounded)
        {
            Kill();
        }
    }

    void OnCollisionEnter(Collision other)
    {
        if (other.gameObject.tag == "Ground")
        {
            isGrounded = true;
        }
    }
    //
    void OnCollisionExit(Collision other)
    {
        if (other.gameObject.tag == "Ground")
        {
            isGrounded = false;
        }
    }
    //Explosion code
    void Kill()
    {
        Vector3 explosionCenterPosition = transform.position;
        rb.AddExplosionForce(explosionForce, explosionCenterPosition, explosionRadius);

        Destroy(gameObject);

    }
}

我正在制作一款让您像TF2一样跳跃的游戏。它还应移动其他刚体,如下所示: https://www.jetbrains.com/help/clion/working-with-the-ide-features-from-command-line.html

我是团结的新手,不知道为什么这行不通。

1 个答案:

答案 0 :(得分:0)

@bobshel​​lby

您正在摧毁与施加爆炸力相同的框架中的火箭物体。所以在看到爆炸效果之前,火箭将被摧毁。

尝试使用协程作为kill函数,这样可以增加等待时间。

<?php

$data = array(
  array('so','item 1','details 1','date 1','qty 1'),
  array('so','item 2','details 2','date 2','qty 2'),
  array(4 => 'details of 22'),
  array('so','item 3','details 3','date 2','qty 3'),
  array(4 => 'details of 33'),
  );

foreach ($data as $key => $items)
{
    $total_items = count($items);

    if ($total_items == "1" && $items[4])
    {
        $previous_array_key = $key - 1;

        $new_data[$previous_array_key]['D'] = $items[4];
    }
    else
    {
        $new_data[$key] = $items;
    }
}

print_r($new_data);

?>

另一件事是,您在启动5秒后调用了kill功能,这会再次摧毁火箭。删除它,因为您已经在检查它是否在火箭上。