如何使我的爆炸召唤代码工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使我的爆炸召唤代码工作相关的知识,希望对你有一定的参考价值。
所以,我正在制作一个游戏,其中主要机制是火箭跳跃(射击你的脚上的火箭和爆炸推动你的力量(如TF2))并且我不能让爆炸只召唤一次并且它召唤在错误的地方:/
我已经尝试在if语句中添加等待,并偶然发现我目前正在使用的内容。这在理论上应该有效,但不是。
using UnityEngine;
using System.Collections;
public class Rocket : MonoBehaviour
{
//Public changable things
public float speed = 20.0f;
public float life = 5.0f;
public bool canRunProgress = true;
public bool isGrounded;
public GameObject Explosion;
public Transform rocket;
public Rigidbody rb;
// If the object is alive for more than 5 seconds it dissapears.
void Start()
{
Invoke("Kill", life);
}
// Update is called once per frame
void Update()
{
//if the object isn't tounching the ground and is able to run it's process
if (isGrounded == false && canRunProgress)
{
transform.position += transform.forward * speed * Time.deltaTime;
canRunProgress = true;
}
//if the object IS touching the ground it then makes the above process unable to work and then begins the kill routine
else if(isGrounded == true)
{
canRunProgress = false;
StartCoroutine(Kill());
}
//detects if tounching ground
void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Ground")
{
isGrounded = true;
}
}
//detects if tounching ground
void OnCollisionExit(Collision other)
{
if (other.gameObject.tag == "Ground")
{
isGrounded = false;
}
}
//kill routine - explosion is summoned and explodes 2 seconds later it then destroys the rocket.
IEnumerator Kill()
{
GameObject go = (GameObject)Instantiate(Explosion, transform); // also this needs to have the explosion be summoned in the middel of the rocket.
yield return new WaitForSeconds(2f);
Destroy(gameObject);
}
}
}
它应该(当火箭被发射器召唤到游戏中时)使火箭向前飞,然后当它击中地面时(标记为“地面”)停止移动并在其周围召唤爆炸并在2秒后被摧毁。目前它只是可怜地沿着地面反弹。
任何帮助,将不胜感激。 :3
答案
首先,您遇到语法错误:OnCollisionEnter,OnCollisionExit和Kill方法都在Update方法中...您应该先修复它。
然后,为了让你的代码工作,我假设你已经在火箭上放置了一个碰撞器,并在地面上放置了一个碰撞器。如果火箭弹跳,它可能是一个刚体的原因。实际上,Rigidbody使物体碰撞和反弹,因此不会抛出OnCollisionEnter。如果火箭或地面上有一个,请尝试将其移除。
以上是关于如何使我的爆炸召唤代码工作的主要内容,如果未能解决你的问题,请参考以下文章
(discord.py) 如何使我的 setprefix 命令正常工作?