我正在编写一个游戏,当玩家冲进一个盒子时,它应该会破碎,而不是在一定时间后消失的碎片精灵。
using System.Collections;
使用系统。集合。泛型;使用UnityEngine
公共类破碎件:单行为{ // 开始在第一帧更新之前调用
public float moveSpeed = 3f;
private Vector3 moveDirection;
public float deceleration = 5f;
public float lifetime = 3f;
public SpriteRenderer theSR;
public float fadeSpeed = 2.5f;
void Start()
{
moveDirection.x = Random.Range(-moveSpeed, moveSpeed);
moveDirection.y = Random.Range(-moveSpeed, moveSpeed);
}
// Update is called once per frame
async void Update()
{
transform.position += moveDirection * Time.deltaTime;
moveDirection = Lerp(moveDirection, Vector3.zero, deceleration * Time.deltaTime);
lifetime -= Time.deltaTime;
if(lifetime < 0)
{
theSR.color=new Color(theSR.color.r, theSR.color.g, theSR.color.b, Mathf.MoveTowards(theSR.color.a, 0f, fadeSpeed * Time.deltaTime));
if(theSR.color.a == 0f)
{
Destroy(gameObject);
}
}
}
}
using System.Collections;
使用系统。集合。泛型;使用UnityEngine
public class Breakables:MonoBehaviour { public game object[]broken pieces;
public int maxPieces = 5;
public bool shouldDropItem;
public GameObject[] itemsToDrop;
public float itemDropPercent;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Player")
{
if(PlayerController.instance.dashCounter > 0)
{
Destroy(gameObject);
// show broken pieces
int piecesToDrop = Random.Range(1, maxPieces);
for(int i = 0; i < piecesToDrop; i++)
{
int randomPiece= Random.Range(0, brokenPieces.Length);
Instantiate(brokenPieces[randomPiece], transform.position, transform.rotation);
}
// drop items
if(shouldDropItem)
{
float dropChance = Random.Range(0f,100f);
if(dropChance < itemDropPercent)
{
int randomItem = Random.Range(0, itemsToDrop.Length);
Instantiate(itemsToDrop[randomItem], transform.position, transform.rotation);
}
}
}
}
}
}
所以你的实际误差与时间无关。
“游戏对象”类型的对象已被销毁,但您仍在尝试访问它。这个错误是在我打破盒子时出现的
这是因为你破坏了你的物体
Destroy(gameObject);
然后在它已经被摧毁后,尝试访问它的转换位置
。
只需事先缓存位置和旋转
var position = transform.position;
var rotation = transform.rotation;
Destroy(gameObject);
// show broken pieces
int piecesToDrop = Random.Range(0, maxPieces) + 1;
for(int i = 0; i < piecesToDrop; i++)
{
int randomPiece= Random.Range(0, brokenPieces.Length);
Instantiate(brokenPieces[randomPiece], position, rotation);
}
或确保将
Destroy (gameObject);
这样它就不会在销毁它之后试图访问它的任何属性。
我想创建一个由TreeNode对象组成的Tree数据结构。根是一个TreeNode。每个TreeNode都有一个父TreeNode和一个子TreeNode列表。树是递归构建的。我简化了代码,使这个例子不太难。函数工作正常。当没有TreeNode的child_values并且返回空列表时,递归结束。这非常好。 每个TreeNode的子节点成员不正确。脚本收集列表(node_list)中的所有Tree
对于这个示例: null 是否有类似这样的语句用于此检查?或者我应该使用
我有三节课。 > 一个抽象类,abstractA有一个受保护的构造函数 一个类扩展了抽象类,父类有两个构造函数 一个类扩展父类,子类有一个构造函数 这是从抽象类扩展而来的父类 这是从父类扩展而来的子类 自定义组件看起来像这样 所以,当spring为特定测试实例化所有bean时,它会正确地实例化子bean。当父bean被实例化时,它得到2个bean[父和子]。所以,我最终会出错, 类型父的多个bea
问题内容: 我对Python 3中的和类有些困惑。也许有人可以消除我的困惑或提供一些其他信息。 我目前的理解是,每个类(除外)都从称为的基类继承。但是每个类(包括)也是该类的一个实例,它是自身的实例,并且也从继承。 我的问题是: 是否有一个原因/设计决策,为什么是的实例并从中继承?对象的/ class是否也可以是对象本身? 类()如何成为其自身的实例? 哪一个是真正的基类或? 我一直认为这将是最“
我有一个类(消息),它有一些实例变量。其中一个变量的类型是interface(MessageContent)。在将这个类序列化为json的过程中,我希望使用依赖于实现的名称序列化这个变量(内容)。下面是详细信息的代码片段: 我的要求是,当消息序列化并且内容类型为VideoMessage时,序列化的json应该是: 如何通过fasterxml Jackson实现?我正在使用ObjectMapper的
问题内容: 目标:实施标准的“设置” GUI窗口。类别位于 ListView左侧,而相应选项位于Pane右侧。 (请忽略具有重复类别的明显错误;仍在处理) 在此处输入图片说明 我有一个用于整体“设置”窗口的主窗口,其中包含 ListView带有所有类别的设置。窗口的右侧 具有AnchorPane, 当从列表中选择一个类别时,用于为每个类别加载单独的FXML文件。 当用户选择类别时,我需要他们能够编