хочу сделать игру на unity android, есть сфера вокруг которой должен крутиться объект firePoint c помощью джойстика, но объект который крутится вокруг сферы не сохраняет радиус, вот что я пробую:
void MoveCircle()
{
float x, z;
x = variableJoystick.Horizontal;
z = variableJoystick.Vertical;
transform.position = Vector3.MoveTowards(transform.position, new Vector3((Center.transform.position.x + x * radius), Center.transform.position.y, ((Center.transform.position.z +z * radius))), 0.35f);
transform.Rotate(new Vector3(rotationAngles.x * rotationSpeed * Time.deltaTime, rotationAngles.y * rotationSpeed * Time.deltaTime, rotationAngles.z * rotationSpeed * Time.deltaTime));
}
Выглядит это так, левый джойстик отвечает за передвижение сферы, а правый за передвижение оружия вокруг этой сферы, проблема в том, что оружие не сохраняет радиус вращения а полностью копирует поведение джостика, когда джостик в исходном положении орудие то же перемещается во внутрь сферы.
Как должно быть при джойстике в начальном положении:
А вот как работает это сейчас:
Само вращение работает корректно но как только я начинаю двигать правый джостик, пушка то же начинает вылазить из сферы, она не сохранила орбитальное положение. можно ли это как-то исправить и чтоб это всё работало при движении сферы желательно с примерами, заранее спасибо.
Чему ты удивляешься? Тебе нужен только угол аналога. А ты используешь оси x и y.
float Radius = 1f;
Vector3 GunPos;
public Transform SphereTransform;
void Start () {
// Стартовый поворот
UpdateGunAngle(90);
}
void MoveCircle () {
Vector2 AnalogAxis = new Vector2(variableJoystick.Horizontal, variableJoystick.Vertical);
if (AnalogAxis.magnitude > 0.1f) { // Что-бы не обрабатывать аналог на нейтралке
// Находим угол (в радианах)
UpdateGunRotation(Mathf.Atan2(AnalogAxis.y, AnalogAxis.x));
)
transform.localPosition = GunPos+SphereTransform.localPosition;
}
void UpdateGunAngle (float angle) {
UpdateGunRotation(angle/180f*Mathf.PI);
}
void UpdateGunRotation (float rad) {
// Находим позицию с неким Radius
GunPos = new Vector3(Mathf.Cos(rad), 0, Mathf.Sin(rad))*Radius;
// И поворот ствола в градусвх (базовый поворот на 0 градусов (в право, а не вперёд/вверх на 90))
transform.localEulerAngles = new Vector3(0, -rad/Mathf.PI*180f, 0);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Почему высвечивается ошибка CS0029(не получается преобразовать одно в другое)и как мне это сделать?
Срочно нужна помощьАлгоритм кодирования (он несложный) доступен по ссылкам:
Может кто подсказать? Как в WPF заставить MediaElement воспроизводить все аудио дорожки из видеоЯ открываю видео (кусок моего геймплея) но из звука...
У меня есть файл, из которого необходимо заполнить базу данныхСтруктура файла сложная(например, значение ячейки С6 зависит от Company name1, Type1,...