Unity - перемещать объект до точки - PullRequest
0 голосов
/ 13 сентября 2018

Я использую код ниже, чтобы переместить мяч в определенную точку. Но мяч «телепортируется» туда, как я могу перекатить мяч до точки?

void Update(){
            if (Input.GetMouseButtonDown(0) && EventSystem.current.currentSelectedGameObject != ButtonDiminuir && EventSystem.current.currentSelectedGameObject != ButtonAumentar &&
       EventSystem.current.currentSelectedGameObject != BarraForca) {
                    transform.position = Vector3.Lerp(transform.position, new Vector3(transform.position.x, transform.position.y, -9.0424f), 2 * Time.deltaTime);
                    Anim.Play("Kick_Up");
            }
}

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Если вы хотите бросить мяч, используйте AddForce() вместо transform.position.

Сначала добавьте Rigidbody и Sphere Collider к объекту игры с мячом.

Тогда попробуйте этот код:

public Vector3 targetPoint;
public float forceAmount;

...

void Update()
{
    Vector3 force = ((targetPoint - transform.position).normalized * forceAmount * Time.smoothDeltaTime);
    GetComponent<Rigidbody>().AddForce(force);
}

Кроме того, если вы хотите, чтобы мяч останавливался сразу по прибытии к целевой точке, вы можете установить GetComponent<Rigidbody>().velocity в 0, когда targetPoint - transform.position = 0

Надеюсь, это поможет вам.

0 голосов
/ 13 сентября 2018

Вы можете сделать это, используя Vector3.Lerp:

Vector3 startPosition;
Vector3 endPosition;
var speed = 10.0;

transform.position = Vector3.Lerp(startPosition, endPosition, speed * Time.deltaTime);

или используя Vector3.MoveTowards

// The step size is equal to speed times frame time.
float step = speed * Time.deltaTime;

// Move our position a step closer to the target.
transform.position = Vector3.MoveTowards(transform.position, target.position, step);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...