我对C#和Unity相当陌生,我尝试制作“愤怒的小鸟”克隆版,并陷入了这个问题。
我想在鸟飞行并撞击物体时更改Gameobject(在我的情况下为木刻版)的质量,它应从Mass:1更改为Mass:0.2 here is a screenshot of the scene 我创建了两个方法,它以一种怪异的方式工作,但是每次我开始游戏时,质量不会以0.2变为1。仅当鸟与木刻相撞时才应改变。
这是我的代码:
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;
}
答案 0 :(得分:0)
在随附于MonoBehaviour上使用这两个事件。
发生碰撞时调用
void OnCollisionEnter2D(Collision2D col)
{
GetComponent<Rigidbody2D>().mass = wallMass;
}
碰撞结束时的方式相同。
void OnCollisionExit2D(Collision2D other)
{
GetComponent<Rigidbody2D>().mass = 0.2f;
}