Unity - жесткое тело MovePosition замедляется, достигнув цели - PullRequest
0 голосов
/ 19 января 2020

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

enter image description here

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

public class Dotty : MonoBehaviour
{
    [SerializeField] Transform playerTarget;
    Vector3 direction;
    Rigidbody2D rb;
    float speed = 2.2f;
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }
    void Update()
    {
        direction = playerTarget.position - transform.position;
        float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
        rb.rotation = angle;
    }

    private void FixedUpdate() {
        rb.MovePosition(transform.position + direction.normalized * speed);
    }
}

1 Ответ

1 голос
/ 19 января 2020

прежде всего измените эту строку:

rb.MovePosition(transform.position + direction.normalized * speed);

на эту:

rb.MovePosition(transform.position + direction.normalized * speed * Time.fixedDeltaTime);

, и причина, по которой она замедляется, возможно, потому, что целевая позиция "Z" не равна "0 "(аналогично позиции игрока" Z ").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...