gpt4 book ai didi

c# - CollisionOnEnter 如何检测物体是否发生碰撞?

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:07 27 4
gpt4 key购买 nike

我是 C# 和 Unity 的新手,我尝试制作一个 Angry Birds 的克隆,但我被这个问题困住了。

我想改变游戏对象的质量(在我的例子中是木 block ),当鸟在飞行并撞击物体时,它应该从 Mass: 1 变为 Mass: 0.2 here is a screenshot of the scene我创建了两种方法,它以一种奇怪的方式工作,但每次我开始游戏时,质量都不是 1,而是 0.2。它应该只在鸟与木版碰撞时发生变化。

这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Wall : MonoBehaviour

private float wallMass;
private bool isHit;
private Rigidbody2D rb;

void Start()
{
rb = gameObject.GetComponent<Rigidbody2D>();
wallMass = 1.0f;
isHit = false;
}

void Update()
{
CollisionOn(isHit);
}

private void CollisionOn(bool isTrue)
{
rb.GetComponent<Rigidbody2D>().mass = wallMass;
if (isTrue)
{
DecreaseMass();
}
}

void DecreaseMass()
{
rb.GetComponent<Rigidbody2D>().mass = 0.2f;
}

最佳答案

在附在盒子上的 MonoBehaviour 上使用这 2 个事件。

碰撞发生时调用

void OnCollisionEnter2D(Collision2D col)
{
GetComponent<Rigidbody2D>().mass = wallMass;
}

碰撞结束时同理。

void OnCollisionExit2D(Collision2D other)
{
GetComponent<Rigidbody2D>().mass = 0.2f;
}

关于c# - CollisionOnEnter 如何检测物体是否发生碰撞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57375751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com