MyFirstRefactoring#27
Conversation
|
|
||
| [RequireComponent(typeof(Rigidbody2D))] | ||
| [RequireComponent(typeof(CircleCollider2D))] | ||
| public abstract class Follower : MonoBehaviour |
| [SerializeField] private Rigidbody _rigidbody; | ||
|
|
||
| [SerializeField] private float _moveSpeed; | ||
| [SerializeField] private float _maxTargetDistance; |
|
|
||
| protected virtual void OnTriggerEnter2D(Collider2D collision) { } | ||
|
|
||
| private void SetTargetPosition() |
|
|
||
| private void Start() | ||
| { | ||
| _startEnemies = GameObject.FindGameObjectsWithTag("Enemy").Length; |
There was a problem hiding this comment.
Мы не используем FindGameObjectsWithTag
| } | ||
| } | ||
|
|
||
| public IEnumerator BoostSpeed(float workingTime) |
| { | ||
| if (collision.gameObject.TryGetComponent<Player>(out Player player)) | ||
| { | ||
| StartCoroutine(player.BoostSpeed(player.BoostSpeedTime)); |
There was a problem hiding this comment.
Я думаю лучше отсюда передавать и время и силу ускорения
| { | ||
| if (collision.gameObject.TryGetComponent<Enemy>(out Enemy enemy)) | ||
| { | ||
| GetComponentInParent<LevelFinisher>().AddKilledEnemy(); |
| _rigidbody.velocity = (_target - transform.position).normalized * _speed * Time.deltaTime; | ||
|
|
||
| if (transform.position == _target) | ||
| _target = Random.insideUnitCircle * _radius; |
|
|
||
| private void Update() | ||
| { | ||
| _rigidbody.velocity = (_target - transform.position).normalized * _speed * Time.deltaTime; |
There was a problem hiding this comment.
Есть замечательная функция которая работает точней.
У тебя как минимум противник будет регулярно пролетать сквозь цель
| _maxEnemiesNumber = GetComponentsInChildren<Enemy>().Length; | ||
| } | ||
|
|
||
| public void AddKilledEnemy() |
There was a problem hiding this comment.
Небезопасный метод. Нужно ориентироваться по мёртвым противникам. Сейчас у тебя счётчик живёт отдельно и никак не согласован
|
|
||
| private void Update() | ||
| { | ||
| _rigidbody.velocity = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")) * _moveSpeed * Time.deltaTime; |
| _rigidbody.velocity = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")) * _moveSpeed * Time.deltaTime; | ||
| } | ||
|
|
||
| public IEnumerator BoostSpeed(float duration, float multiplier) |
There was a problem hiding this comment.
А вот это охуительно сделано. Молодец!
| public void AddKilledEnemy(Enemy enemy) | ||
| { | ||
| _deadEnemies.Add(enemy); | ||
|
|
||
| if (_deadEnemies.Count >= _maxEnemiesNumber) | ||
| { | ||
| _menu.SetActive(true); | ||
| gameObject.SetActive(false); | ||
| } | ||
| } |
There was a problem hiding this comment.
_aliveEnemies убираешь из него противника и смотришь осталось ли там что-то
| { | ||
| public event OnDied Died; | ||
|
|
||
| public delegate void OnDied(Enemy sender); |
There was a problem hiding this comment.
Делегаты мы сами не определяем, а если бы и определяли то стиль там не такой. Воспользуйся стандартными Action
No description provided.