碰撞输入如何检测物体是否碰撞?



我对C#和Unity来说是新手,我尝试制作一个愤怒的小鸟克隆,但我坚持这个问题。

我想在鸟飞行并击中物体时更改游戏对象(在我的例子中是木版(的质量,它应该从质量:1更改为质量:0.2 这是现场截图 我创建了两个方法,它以一种奇怪的方式工作,但每次我开始游戏时,质量不是 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;
}

在附加到盒子的 MonoBehavior 上使用这两个事件。

发生冲突时调用

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

碰撞结束时也是如此。

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

最新更新