我的代码为什么它的回归平台
public class Falling : MonoBehaviour {
Rigidbody2D rb;
Vector2 initialPosition;
bool platformMovingBack;
void Start()
{
rb = GetComponent<Rigidbody2D>();
initialPosition = transform.position;
}
void Update()
{
if (platformMovingBack)
transform.position = Vector2.MoveTowards(transform.position, initialPosition, 20f * Time.deltaTime);
if (transform.position.y == initialPosition.y)
platformMovingBack = false;
}
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.name.Equals("Personage_0") && !platformMovingBack)
{
Invoke("DropPlatform", 0.5f);
}
}
void DropPlatform()
{
rb.isKinematic = false;
Invoke("GetPlatformBack", 1f);
}
void GetPlatformBack()
{
rb.velocity = Vector2.zero;
rb.isKinematic = true;
platformMovingBack = true;
}
}
几秒钟后平台返回原来的位置,但随后它被删除了,我不知道如何修复它。
答案 0 :(得分:1)
在每种情况下,platformMovingBack
都不会设置为false
。改变这个:
void Update()
{
if (platformMovingBack)
transform.position = Vector2.MoveTowards(transform.position, initialPosition, 20f * Time.deltaTime);
if (transform.position.y == initialPosition.y)
platformMovingBack = false;
}
为:
void Update()
{
if (platformMovingBack)
transform.position = Vector2.MoveTowards(transform.position, initialPosition, 20f * Time.deltaTime);
if (Mathf.Abs(transform.position.y - initialPosition.y) < (Time.deltaTime *2.0f)){
platformMovingBack = false;
transform.position = initialPosition;
}
}
例如......
正如Sebastian Kilb在评论中提到的那样;)