【发布时间】:2020-12-10 20:59:42
【问题描述】:
当玩家进入危险区域(由对撞机触发)时,我有以下游戏对象(盒子)掉落,但我想要的是盒子在掉落前晃动半秒钟。我认为协程是实现这一点的最佳方式,并且我有让盒子掉落的代码,但我不确定如何让盒子在我的脚本中摇晃。
这是我的代码,以防它有助于理解:
public class FallingBox : MonoBehaviour
{
[SerializeField] float fallSpeed = 3f;
[SerializeField] Transform target;
Rigidbody2D rigidbody;
BoxCollider2D boxCollider;
bool isFalling = false;
void Start()
{
rigidbody = GetComponent<Rigidbody2D>();
boxCollider = GetComponent<BoxCollider2D>();
}
void Update()
{
var frameMovement = fallSpeed * Time.deltaTime;
var targetPosition = target.transform.position;
if (isFalling)
{
transform.position = Vector2.MoveTowards(transform.position, targetPosition, frameMovement);
if (transform.position == targetPosition)
{
gameObject.layer = LayerMask.NameToLayer("Ground");
boxCollider.enabled = true;
}
}
}
//Called when entering the "danger zone"
public void ChangeStatus()
{
isFalling = true;
}
【问题讨论】:
标签: c# unity3d game-physics