Как заставить игровой объект находить позиции других игровых объектов и определять их цвет? - PullRequest
2 голосов
/ 26 марта 2019

У меня 2 игровых объекта, один синий и красный. Они оба бегают по сцене с ограничениями на камеру, поэтому они не могут пройти определенную область.

И, если возможно, я бы хотел знать, как их перемещать по диагонали.

Это весь мой код.

public Transform Objectup;
public Transform Objectdown;
public Transform Objectright;
public Transform Objectleft;
public DirectionGameObject direction;
public int speed = 2;



public enum DirectionGameObject
{
    Right,
    Left,
    Up,
    Down
}

// Start is called before the first frame update
void Start()
{
    direction = SortdirectionGameObject(direction);
}

// Update is called once per frame
void Update()
{

    Destroy();

    if(direction == DirectionGameObject.Right)
    {
        transform.Translate(Vector3.right * Time.deltaTime * speed);
        if(transform.position.x >= Objectright.position.x)
        {
            direction = SortdirectionGameObject(direction);
        }
    }

    if(direction == DirectionGameObject.Left)
    {
        transform.Translate(Vector3.left * Time.deltaTime * speed);
        if(transform.position.x <= Objectleft.position.x)
        {
            direction = SortdirectionGameObject(direction);
        }
    }

    if(direction == DirectionGameObject.Up)
    {
        transform.Translate(Vector3.up * Time.deltaTime * speed);
        if(transform.position.y >= Objectup.position.y)
        {
            direction = SortdirectionGameObject(direction);
        }
    }

    if(direction == DirectionGameObject.Down)
    {
        transform.Translate(Vector3.down * Time.deltaTime * speed);
        if(transform.position.y <= Objectdown.position.y)
        {
            direction = SortdirectionGameObject(direction);
        }
    }
}

private DirectionGameObject SortdirectionGameObject(DirectionGameObject maindirection)
{
    DirectionGameObject directionSorted = maindirection;

    do{
        int newDirection = Random.Range((int)DirectionGameObject.Right, (int)DirectionGameObject.Down + 1);
        directionSorted = (DirectionGameObject)newDirection;

    } while (maindirection == directionSorted);

    return directionSorted;
}

void Destroy()
{
    Destroy(gameObject,120.0f);
}

Мне нужно показать на консоли их цвет и положение, когда я нажимаю G и V.

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Свойство color объекта GameObject, которое вы ищете, находится в материале компонента Renderer.

На него можно ссылаться следующим образом:

gameObject.GetComponent<Renderer>().material.color

Чтобы получить компонент Renderer для GameObject, вы должны иметь ссылку на него, например:

GameObject object1;
GameObject object2;

Затем вы можете получить цвет каждого объекта следующим образом:

Color color1 = object1.GetComponent<Renderer>().material.color;

Затем вы можете проверить значение цвета следующим образом:

if (color1 == Color.red){

    // Do something

}

Или, если вы хотите отобразить их цвет на консоли:

Debug.Log(color1);

Цвета хранятся как 4 значения с плавающей запятой, поэтому, если вы хотите вывести «color is red» или «color is blue», вам понадобится проверка эквивалентности, как я предоставил выше с комментарием «// Сделать что-то» .

0 голосов
/ 26 марта 2019

Я не знаю, существует ли метод для получения цвета материала Gameobject, но вы можете назвать Gameobject как цвет, который у него есть, так как цвет является статическим и не меняется, и вы можете использовать метод Gameobject.name, и для находя другие игровые объекты вы можете использовать transform.Lookat

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