Unity Setting родительские элементы gameObjects превращаются в переменные преобразования childs? - PullRequest
0 голосов
/ 24 января 2019

Есть ли хороший способ сделать это, я скопировал код ниже. Это мой код, так что gameObjects патрулирует вокруг определенной области карты, мне нужен способ, чтобы при появлении врагов было установлено преобразование относительно gameObject, в котором появлялся враг.

Когда я вызываю своего врага из префаба, враг должен патрулировать вокруг точки появления, которая его породила, однако в игре есть несколько точек, в которых появляются враги. Скрипт Patrol имеет преобразование public Transform moveSpots;, которое я назначаю объекты точки возрождения.

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

public class Patrol0 : MonoBehaviour
{
    public float speed;
    public Transform moveSpots;
    private float waitTime;
    public float StartwaitTime;
    public float MinX;
    public float MaxX;
    public float MinY;
    public float MaxY;
    void start()
    {
        moveSpots = GetComponentInParent<Transform>();
        waitTime = StartwaitTime;
        moveSpots.position = new Vector2(Random.Range(MinX, MaxX), Random.Range(MinY, MaxX));
    }
    private void Update()
    {
        transform.position = Vector2.MoveTowards(transform.position, moveSpots.position, speed * Time.deltaTime);
        if (Vector2.Distance(transform.position, moveSpots.position) < 0.2f)
        {
            if (waitTime <= 0)
            {
                moveSpots.position = new Vector2(Random.Range(MinX, MaxX), Random.Range(MinY, MaxX));
                waitTime = StartwaitTime;
            }
            else
            {
                waitTime -= Time.deltaTime;
            }
        }
    }
}

1 Ответ

0 голосов
/ 24 января 2019

Если предположить, что вызываемый объект также связан с порождаемым объектом, вы можете просто заменить все ваши transform.position ссылки на transform.localPosition.Если нет, вы можете использовать Transform.TransformPoint () , вызываемый из преобразования создателя.

Transform Spawner;

void start()
{
    moveSpots = GetComponentInParent<Transform>();
    waitTime = StartwaitTime;
    moveSpots.position = new Vector2(Random.Range(MinX, MaxX), Random.Range(MinY, MaxX));
    moveSpots.position = Spawner.TransformPoint(moveSpots.position);
}

Это займет локальное пространство moveSpots.position и преобразует его в мировое пространство относительно Spawner.

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