Не меняется bool значение при достижении y позиции

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BossPatrol : MonoBehaviour
{
   public GameObject UpBorder;
   public GameObject DownBorder;
   public Rigidbody2D Body;

   public bool isUpDirection;

   public float speed;


   void Update()
   {
        if (isUpDirection)
        {
             Body.velocity = Vector2.up * speed;
             if (transform.position.y > UpBorder.transform.position.y)
                 isUpDirection = !isUpDirection;   
        }
        else
        {
            Body.velocity = Vector2.down * speed;
            if (transform.position.y < DownBorder.transform.position.y)
                isUpDirection = !isUpDirection;
        }
    
}

}


Ответы (1 шт):

Автор решения: Yaroslav

Чую, что проблема не скрипте, а в том, что летя в верх или в низ, он упирается в потолок или пол и не может достигнуть целевой высоты.

Лучше так:

[DisallowMultipleComponent]
// обязательные компоненты
[RequireComponent(typeof(Collider))]
[RequireComponent(typeof(Rigidbody))]

public class BossPatrol : MonoBehaviour {
    // SerializeField - отображает в инспекторе, как c public полями 
    [SerializeField] private float _speed = 3f;
    private Rigidbody2D _body;
    private Vector2 _moveVector = new Vector2(0, 1);

    private void Awake () {
        _body = GetComponent<Rigidbody2D>();
    }

    // у физики тел своя частота обновления не привязанная к кадрам, поэтому FixedUpdate 
    private void FixedUpdate () {
        _body.velocity = _moveVector*_speed;
    }

    private void OnCollisionEnter (Collision collision) {
        BossPatrolVelocity BPV = collision.gameObject.GetComponent<BossPatrolVelocity>();
        if (BPV != null)
            _moveVector = BPV.MoveVector;
    }
}

Скрипт для потолка МoveVector:(0, -1) и пола (0, 1):

[DisallowMultipleComponent]
[RequireComponent(typeof(Collider))]

public class BossPatrolVelocity : MonoBehaviour {
    public Vector2 МoveVector;
}
→ Ссылка