Не работает MoveTovards в Android билде.

Программирование для iPhone & Android

Не работает MoveTovards в Android билде.

Сообщение NightKot 12 апр 2020, 18:28

Помогите с проблемой. Собираю билд в Unity. В PC версии все работает правильно. В билде под Android работает как на видео. (19 сек.)
Поясню. Когда шар далеко - фокусник в цилиндре постоянно "перемещает" кристалл по вертикали в случайно выбранную точку из четырех (реализовано массивом). По сути - патрулирование местности. Когда шар приближается на определенное расстояние - кристалл устремляется к шару.
В андроидном билде "патрулирование" не работает, а движение к шару - работает.
Использую Bluestacks, USB прав у него нет, UnityRemote не подключить. Ни телефона ни планшете нет, и взять негде.
Пробовал Amdroid Studio, в нем виртуальный девайс тоже запустить не удалось.

Unity 2019.3

Видео



Изображение
Изображение
Изображение





сам скрипт

using System.Collections.Generic;
using UnityEngine;

public class AIEnemy : MonoBehaviour
{


public Vector2 StartPos;
public Vector2 EndPos;
public float PositionY;
public float speed;
public float Min;
public float Max;
public float[] WAYpoints;
private int PositionArray;
public float DistancetoTarget;
public Transform target;


void Start()
{
target = GameObject.FindGameObjectWithTag("The_Ball").GetComponent<Transform>();
StartPos = GetComponent<Transform>().position; //Запоминаем начальную позицию
WAYpoints[0] = Max;
WAYpoints[1] = (Max / 2);
WAYpoints[2] = 0;
WAYpoints[3] = (Min / 2);
WAYpoints[4] = Min;
}

// Update is called once per frame
void Update()
{
if (Vector2.Distance(transform.position, target.position) < DistancetoTarget)
{
MoveToTarget();
}
else if (Vector2.Distance(transform.position, target.position) > DistancetoTarget)
{
RandomizeMove();
}
}

void RandomizeMove()
{
Debug.Log(PositionY);

if ((EndPos.y == transform.position.y)/* || ((EndPos.y - transform.position.y) < .01f)*/)
{
PositionArray = Random.Range(0, WAYpoints.Length);
PositionY = WAYpoints[PositionArray];

}

EndPos = new Vector2(transform.position.x, PositionY); // получаем координаты смещения
transform.position = Vector2.MoveTowards(transform.position, EndPos, speed * Time.fixedDeltaTime);
}
void MoveToTarget()
{
EndPos = new Vector2(transform.position.x, target.position.y); // получаем координаты смещения
transform.position = Vector2.MoveTowards(transform.position, EndPos, speed * Time.deltaTime);
}


}
Последний раз редактировалось NightKot 12 апр 2020, 21:23, всего редактировалось 3 раз(а).
NightKot
UNец
 
Сообщения: 21
Зарегистрирован: 04 ноя 2019, 13:41

Re: Не работает MoveTovards в Android билде.

Сообщение 1max1 12 апр 2020, 18:39

Ошибок в logcat`e нет?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Не работает MoveTovards в Android билде.

Сообщение NightKot 15 апр 2020, 12:40

Нашел решение. Да, дурацкое, но заработало...
нет времени по неделе над одной проблемой сидеть.

using UnityEngine;

public class AIEnemy : MonoBehaviour
{
public Vector3 StartPos;
public Vector3 EndPos;
public float PositionY;
public float speed;
public float Min;
public float Max;
public float [] WAYpoints;
private int PositionArray;
public float DistancetoTarget;
public Transform target;
public Transform MainPosition;



void Start()
{
StartPos = GetComponent<Transform>().position; //Запоминаем начальную позицию
target = GameObject.FindGameObjectWithTag("The_Ball").GetComponent<Transform>();
WAYpoints = new float[5] { Max, Max/2, 0, Min/2, Min };
PositionArray = Random.Range(0, WAYpoints.Length);
PositionY = WAYpoints[PositionArray];



}


void Update()
{
if (Vector3.Distance(transform.position, target.position) < DistancetoTarget)
{
MoveToTarget();
}
else if (Vector3.Distance(transform.position, target.position) > DistancetoTarget)
{
RandomizeMove();
}
}

void RandomizeMove()
{



if (MainPosition.position == EndPos)
{
PositionArray = Random.Range(0, WAYpoints.Length);
PositionY = WAYpoints[PositionArray];
}

EndPos = new Vector3(transform.position.x, PositionY); // получаем координаты смещения
transform.position = Vector3.MoveTowards(transform.position, EndPos, speed * Time.deltaTime);
}
void MoveToTarget()
{
EndPos = new Vector3(transform.position.x, target.position.y); // получаем координаты смещения
transform.position = Vector3.MoveTowards(transform.position, EndPos, speed * Time.deltaTime);
}
}
NightKot
UNец
 
Сообщения: 21
Зарегистрирован: 04 ноя 2019, 13:41


Вернуться в iPhone & Android

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3