我正在尝试用最简单的物理原理制作最简单的平台游戏原型(重力下落,左右移动,以及(也许)跳跃)。例如:
void Move () {
if (!isDying || !isDead || !isShooting || !isFalling)
{
float amountToMove = Time.deltaTime * Input.GetAxis("Horizontal") * playerSpeed;
transform.Translate(Vector3.right * amountToMove);
}
}
void ApplyGravity() {
float amountToMove = Time.deltaTime * gravity;
transform.Translate(Vector3.down * amountToMove);
}
问题是我不知道如何在没有物理和 isKinematic 的情况下进行碰撞。我唯一知道的是使用 OnTriggerEnter 函数,因此向所有对象添加了 isTrigger 并写道(Hero.cs):
void OnTriggerEnter (Collider otherGameObjectCollider) {
if (otherGameObjectCollider.gameObject.tag == "ground") {
Debug.Log("ground/wall collision");
}
}
我知道我需要阻止我的英雄以防止跌倒(行走)穿过地面,但我真的想不出来。
抱歉这个愚蠢的问题。