所以没什么特别的,实际上很简单,但我仍然在努力。我有一个敌人,我想在他的 X 值增加时翻转精灵,相反,在我的 PlayerMovement Skript 中,这种方法有效,但现在不再有效。
private void UpdateDirection()
{
if (transform.position.x < -.1f)
{
spr.flipX = true;
}
else
{
spr.flipX = false;
}
}
这是一个实现示例:
private Vector2 previousPosition;
private SpriteRenderer spr;
private void Start()
{
// Initializes previous position
previousPosition = transform.position;
spr = GetComponent<SpriteRenderer>();
}
private void Update()
{
UpdateDirection();
// Update the previous position for the upcoming frame
previousPosition = transform.position;
}
private void UpdateDirection()
{
// Checks if the enemy has moved horizontally
if (transform.position.x > previousPosition.x)
{
// Move right
spr.flipX = false;
}
else if (transform.position.x < previousPosition.x)
{
// Move left
spr.flipX = true;
}
}
逻辑:
previousPosition
用于存储前一帧中敌人的位置。 previousPosition
在每次 Update 调用结束时更新,因此它始终代表前一帧中的位置。UpdateDirection
检查敌人相对于之前的位置是否向左或向右移动,并相应地翻转精灵。