Unity управление персонажем android
Katerpiller 10 фев 2017, 19:37
Здравствуйте. Адаптирую свою игру под андроид. Есть проблема с сенсорным управление У меня есть два скрипта.
Вот на этом у меня управление со всей анимацией:
using UnityEngine ;
using System.Collections ;
public class Animation : MonoBehaviour
<
//переменная для установки макс. скорости персонажа
public float Speed = 1.5f ; // скорость движения
public float maxSpeed = 10f ;
//переменная для определения направления персонажа вправо/влево
private bool isFacingRight = true ;
//ссылка на компонент анимаций
private Animator anim ;
//находится ли персонаж на земле или в прыжке?
private bool isGrounded = false ;
//ссылка на компонент Transform объекта
//для определения соприкосновения с землей
public Transform groundCheck ;
//радиус определения соприкосновения с землей
private float groundRadius = 0.2f ;
//ссылка на слой, представляющий землю
public LayerMask whatIsGround ;
private Rigidbody2D body ;
private int layerMask ;
///
/// Начальная инициализация
///
private void Start ( )
<
body = GetComponent Rigidbody2D > ( ) ;
body. freezeRotation = true ;
layerMask = 1 gameObject . layer | 1 2 ;
layerMask =
layerMask ;
anim = GetComponent Animator > ( ) ;
>
///
/// Выполняем действия в методе FixedUpdate, т. к. в компоненте Animator персонажа
/// выставлено значение Animate Physics = true и анимация синхронизируется с расчетами физики
///
private void FixedUpdate ( )
<
<
<
//определяем, на земле ли персонаж
isGrounded = Physics2D. OverlapCircle ( groundCheck. position , groundRadius, whatIsGround ) ;
//устанавливаем соответствующую переменную в аниматоре
anim. SetBool ( «Ground» , isGrounded ) ;
//устанавливаем в аниматоре значение скорости взлета/падения
anim. SetFloat ( «vSpeed» , GetComponent Rigidbody2D > ( ) . velocity . y ) ;
//если персонаж в прыжке — выход из метода, чтобы не выполнялись действия, связанные с бегом
if ( ! isGrounded )
return ;
//используем Input.GetAxis для оси Х. метод возвращает значение оси в пределах от -1 до 1.
//при стандартных настройках проекта
//-1 возвращается при нажатии на клавиатуре стрелки влево (или клавиши А),
//1 возвращается при нажатии на клавиатуре стрелки вправо (или клавиши D)
float move = Input. GetAxis ( «Horizontal» ) ;
//в компоненте анимаций изменяем значение параметра Speed на значение оси Х.
//приэтом нам нужен модуль значения
anim. SetFloat ( «Speed» , Mathf. Abs ( move ) ) ;
//обращаемся к компоненту персонажа RigidBody2D. задаем ему скорость по оси Х,
//равную значению оси Х умноженное на значение макс. скорости
GetComponent Rigidbody2D > ( ) . velocity = new Vector2 ( move * maxSpeed, GetComponent Rigidbody2D > ( ) . velocity . y ) ;
//если нажали клавишу для перемещения вправо, а персонаж направлен влево
if ( move > 0 && ! isFacingRight )
//отражаем персонажа вправо
Flip ( ) ;
//обратная ситуация. отражаем персонажа влево
else if ( move 0 && isFacingRight )
Flip ( ) ;
>
>
>
///
/// Метод для смены направления движения персонажа и его зеркального отражения
///
private void Flip ( )
<
//меняем направление движения персонажа
isFacingRight = ! isFacingRight ;
//получаем размеры персонажа
Vector3 theScale = transform . localScale ;
//зеркально отражаем персонажа по оси Х
theScale. x *= — 1 ;
//задаем новый размер персонажа, равный старому, но зеркально отраженный
transform . localScale = theScale ;
>
>
А вот этот для сенсорных кнопок:
using UnityEngine ;
using System.Collections ;
public class Controller : MonoBehaviour
<
public Rigidbody2D rb2d ;
public float playerSpeed ;
public float jumpPower ;
public int directionInput ;
public bool groundCheck ;
public bool facingRight = true ;
void Start ( )
<
rb2d = GetComponent Rigidbody2D > ( ) ;
void FixedUpdate ( )
<
rb2d. velocity = new Vector2 ( playerSpeed * directionInput, rb2d. velocity . y ) ;
>
public void Move ( int InputAxis )
<
public void Jump ( bool isJump )
<
isJump = groundCheck ;
if ( groundCheck )
<
rb2d. velocity = new Vector2 ( rb2d. velocity . x , jumpPower ) ;
>
void Flip ( )
<
facingRight = ! facingRight ;
Vector3 theScale = transform . localScale ;
theScale. x *= — 1 ;
transform . localScale = theScale ;
>
Сенсорные кнопки делаю на канвасах. Добавляю Event Trigger’ы на все три кнопки c Pointer Enter (влево -1, вправо 1, прыжок буль — все понятно). Кнопка прыжок работает отлично — перс прыгает, анимация проигрывается. А вот бегает перс (влево-право) уже без анимации.
Как ̶с̶к̶р̶е̶с̶т̶и̶т̶ь̶ ̶б̶у̶л̶ь̶д̶о̶г̶а̶ ̶с̶ ̶н̶о̶с̶о̶р̶о̶г̶о̶м̶ сделать так чтобы перс смог бегать по сенсорным кнопкам с анимацией? Прыжок работает всегда отлично вместе с анимацией, а вот бегает уже без нее.
Источник
Перевести управление с Pc на Android
У меня есть уже готовая игра для ПКверсии 2Dплатформера, в ней для управления персонажем я использую скрипты :
Управление стрелками на Android
Добрый день форумчане. Мучаюсь. не могу ни как реализовать управление стрелками по осям X и Y под.
Управление камерой на OS Android
Ребята всем привет! Хочу разработать похожую инсталляцию: https://vimeo.com/123304375 .
Управление GR через Android
Привет. Хотелось бы спросить реально ли написать программу для управления компьютером через.
Перенести управление на Android
Прошу помощи сейчас у меня управление реализовано вот так: private void FixedUpdate() < .
Решение
Скажем так очень даже просто.
Что нужно сделать перед этим:
1. Выбрать платформу Android.
2. В главном меню Mobile Input должно быть Enabled.
3. Если нет, но скорее всего у вас уже есть, из стандартных ассетов скачать CrossPlatformInput.
Далее я объясню как заставить кнопки работать. (Все префабы кнопок из CrossPlatformInput работаю по этой схеме). Все скрипты из CrossPlatformInput.
Кидаем на сцену Canvas. Я для удобства создал дочерним к канвасу пустой объект и назвал его Mobile Buttons.
На Mobile Buttons кидаем скрипт MobileControlRig — он скрывает мобильные кнопки, если платформа не мобильная.
Далее кидаем дочерним к Mobile Buttons Image выбираем нужный спрайт, позиционируем как надо и переименовываем, ну допустив в Right.
На Rigth кидаем скрипт ButtonHandler. В его поле Name пишем название или оси. Допустим Horizontal.
Добавляем ДВА компонента Event Trigger.
У первого нажимаем плюс и выбираем Pointer Down и заполняем — первое — Editor and RuinTime. Далее где кружочек выбираем нашу кнопку и во втором списке выбираем ButtonHandler -> SetAxisPositiveState()
У второго нажимаем и выбираем Pointer Up и тоже самое, только выбираем ButtonHandler -> SetAxisNeutralState().
И для интерактивности добавляем компонент Button. В поле Transition выбираем Sprite swap.
Далее в полях HighLighted Sprite и Pressed Sprite выбираем спрайт при который будет при нажатии и когда мышь над кнопкой.
Для других кнопок все тоже самое — различия только вот в чем. Если кнопка влево тогда ButtonHandler -> SetAxisNagativeState()
Источник
Андроид управление unity3d
Всем привет. Помогите мне, пожалуйста, перевести скрипт с ПК на Андроид управление.
Вот скрипт
Управление на андроид (кнопками) unity3d
Всем доброго времени суток! хочу сделать управление с помощью кнопок для 2d платформера на.
Андроид управление для игры в Unity3D
Здравствуйте! сделал код по видео для пк по клавишам,а вот как сделать для кнопок не знаю(ходить.
Unity3d First Person для Андроид устройств
Здравствуйте, подскажите пожалуйста, как реализовать поворот FPS персонажа для android устройств.
Unity3D останавливается работы приложения на Андроид
Собрал приложение, сбилдил его на android 4.4.2, armv7. Запускается приложение, черный экран и.
если вы собираетесь использовать кнопки или джойстик для управления, то строки выше необходимо переделать под вызов кнопками.
кнопки влево вправо
Решение
1. Переключиться на Android.
2. Скачать Standart Assets -> CrossPlatformInput.
3. На сцену кинуть префаб MobileSingleStickControl — виртуальный джойскик и кнопка прыгать.
И можно еще MobileAircraftControls — там кнопки есть право влево
и собрать из них один как вам надо.
4.Поменять в коде
У меня точно такая же проблема. Помогите пожалуйста перевести скрипт с ПК на Андроид управление. Буду очень благодарен.
Разработка 3D игр под андроид на движке Unity3D и C++
Может кто-нибудь знает какие-нибудь книги или видео уроки по разработке 3D игр под андроид на.
Игры Unity3D для Андроид: на каком языке писать?
Добрый день! Хочу писать игры для андроид, только не знаю на каком языке писать. Знаю C++ и C#.
Unity3d управление персонажем
здравствуйте. подскажите пожалуйста, как сделать управление персонажем от первого лица в unity3d.
Touch управление в Unity3d
Очень прошу помочь с модификацией кода под мобильные устройства! Имеется скрипт управления для ПК.
Источник
Платформер под Android на Unity3D
Пожалуй, даже после выхода нового UI, создание интерфейса для Android’а осталось больной темой для многих.
Новая система “UI”, которая появилась в Unity 4.6 сильно упростила жизнь разработчикам, но все же, хотелось бы прояснить некоторые моменты, которые относятся к Android’у.
Из плюсов:
-Мощный набор инструментов
-Корректное масштабирование на разных разрешениях, что в свою очередь устраняет кучу лишней работы
-Поддержка сенсорного управления без дополнительных настроек
-Гибкость и простота в использовании
Статья будет разделена на две части.
Первая (базовая) — для тех, кто еще только начинает пользоваться Unity3D. Вторая — собственно, сама реализация управления для платформера под Android.
Часть первая
1) Для начала, создайте новую сцену File > New Scene.
2) В папке “Assets” создайте еще две папки: “Scripts” и “Sprites”.
3) Далее, спрайты, которые я подготовил, добавляем в папку “Sprites”.
Спрайты:
Ставим Filter Mode на пункт “Point” платформе и персонажу, поскольку они выполнены в пиксель арте.
Перетаскиваем на сцену спрайт персонажа, пару спрайтов платформ и фон(предварительно увеличив его в размере).
Должно получиться что-то похожее на:
Добавим нашему персонажу такие компоненты как:Rigidbody2D,CircleCollider2D и заморозим возможность вращения по оси Z.
Всем платформам добавим компонент: BoxCollider2D.
4) Добавим на сцену три Image’а через GameObject > UI > Image.
Это и есть наш будущий интерфейс(кнопки: вправо, влево, прыжок).
Подгоняем размеры и идем дальше:
Image’ам слева ставим “привязку” к левому нижнему краю, а правому — к правому нижнему.
Для каждого Image’а в Source Image перетаскиваем свой спрайт.
В результате должно получиться:
Вот и конец первой части.
Во второй части, мы перейдем к скриптингу и добавим кнопкам функционал.
Часть вторая
Теперь перейдем к основному:
1) Создайте новый скрипт в папке “Scripts” и назовите его “CharController” (писать будем на C#).
Вставляем в него код:
“Простота — залог успеха” — в нашем случае так и есть. Передвижение и прыжки персонажа были реализованы через отдельные void’ы.
Повесьте данный скрипт на персонажа. Склеить все это дело вместе, нам поможет Event System.
2) Для удобства переименуйте “кнопки” чтобы не запутаться.
Например:”leftButton”,”rightButton”,”jumpButton”.
Добавим каждой кнопке компонент Event Trigger.
Теперь, кнопке “Влево” в компоненте Event Trigger создайте два новых события — PointerDown и PointerExit.
В PointerDown и PointerExit создайте по одному событию, перетащите на каждый нашего персонажа(на котором обязательно должен висеть скрипт).Кликаем по выпадающему меню и находим наш скрипт “CharController” > void “Move(int)”.
Аналогичные манипуляции проведем с кнопкой “Вправо”.
Кнопке “Прыжок” добавим только PointerEnter > CharController > Jump(bool).
3) Пришло время выставлять значения.
Для кнопки “Вправо” тоже поменяем значение в PointerDown, но на “1”.
4) Запустим наш проект:
Конечно назвать данную статью “Разработка от А до Я” нельзя, но думаю многим теперь будет проще сделать управление для Android’а. Всем спасибо за внимание.
Источник