Проблема в этой строке:
Instantiate(heart,Vector3.down * fallSpeed * Time.deltaTime, transform.rotation);
, которые порождают объект в середине экрана, который должен измениться следующим образом:
Instantiate(heart, transform.position, transform.rotation);
Помните, что OnCollisionEnter
вызывается только один раз при обнаружении столкновения, также метод Instantiate
только создает объект и принимает положение и вращение объекта. Таким образом, вы не можете установить скорость для вашего объекта здесь.
Прикрепите другой скрипт к «powerup сердца» и переместите его этим скриптом. Например:
public class Heart : MonoBehaviour
{
private void Update()
{
transform.position += Vector3.down * fallSpeed * Time.deltaTime
}
}