Unity 3D сделать объект следовать за игроком - PullRequest
0 голосов
/ 31 октября 2019

Я хочу сделать робота на unity3D. Я хочу сделать захват робота при столкновении с объектом прикрепить захват. Таким образом, объект будет следовать за захватом.

Что будет добавлено в этот скрипт для создания чего-то подобного?

private Rigidbody gripper;

void Start() 
{
   gripper_part01 = GetComponent<Rigidbody>();
}

void Update() 
{
   if (Input.GetKey("a")) 
       gripper.AddForce(transform.forward * 100);
}

void OnCollisionEnter(Collider obj1) 
{
   // how to make obj1 follow the gripper
}

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Это можно сделать разными способами. Но самое простое было бы сделать obj1 дочерним элементом захвата, как только он столкнется.

код будет выглядеть примерно так

void OnCollisionEnter(Collider obj1) 
{
   // how to make obj1 follow the gripper
   obj1.transform.parent = gripper.transform;
}
0 голосов
/ 31 октября 2019

Просмотр шаблона конечного автомата

http://gameprogrammingpatterns.com/state.html

Вы захотите создать 2 состояния:

  1. Not Follow (по умолчанию)
  2. После

Когда игрок входит в коллайдер, переключите состояние на следующее. Я не собираюсь писать вам всю архитектуру конечного автомата / переключения состояний, чтобы вы могли копировать и вставлять ее, но я могу вам сказать, что вы захотите сделать сами состояния классом MonoBehavior, а сам StateMachine не будетимеют родительские классы и будут привязаны к контроллерам объекта.

Затем вы захотите отслеживать координаты игрока, например, так:

Vector3 playerPosition;

void OnCollisionEnter(Collider obj1)
{
    if(obj1.gameObject.tag == "Player"){
        playerPosition = obj1.transform.position;
        myStateMachine.switchState("Follow"); //obviously replace this with your own state machine code
    }
}

Убедитесь, что у gameObject игрока есть тег "Player" в редакторе Unity.

...