Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034

Движение персонажа типа марио

09.01.2016, 15:14. Показов 6587. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу в 2d варианте.

Все вроде бы нормально, спрайт персонажа движется хорошо и вправо и влево и подпрыгивает хорошо.

Но как только стоит подпрыгнуть при беге (неотжав кнопку бега) начинается полная ерунда!
Персонаж непрыгает и мало того нормально бежать перестает!

Мож есть у кого готовые решения или примеры или как этот код поправить?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using UnityEngine;
using System.Collections;
 
public class PersPosition : MonoBehaviour {
  public float speed = 3;
  public GameObject MyGameObject;
  
  void Update () {
    
    //если зажата клавиша право
    if (Input.GetKey(KeyCode.RightArrow)) {
      GetComponent<Rigidbody2D>().velocity = Vector2.right * speed;
    }
    
    //тоже самое только влево
    if (Input.GetKey (KeyCode.LeftArrow)) {
      GetComponent<Rigidbody2D>().velocity = (Vector2.right * speed) * -1;
    }
    
    //прыжок
    if (Input.GetKeyDown (KeyCode.Space)) {
      GetComponent<Rigidbody2D> ().AddForce (Vector2.up * 300);
    }
  }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.01.2016, 15:14
Ответы с готовыми решениями:

Как сделать чтобы 2 персонажа могли раздавить друг друга по типу марио?
Во время вхождения в триггер уничтожается оба объекта. как это исправить? using UnityEngine; using System.Collections; public...

Движение персонажа 3D
Уважаемые коллеги, пару дней как увлекся Unity и чтобы изучить его как можно лучше, решил написать Subway Surfers самосоятельно. в Unity...

Движение персонажа
Пишу на андроид. Есть 3 кнопки, лево право, прыжок. Так вот, все три действия реализовываю с помощью OnMouseDrag и OnMouseDown. Так вот,...

8
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 59
09.01.2016, 19:39
надо добавить условие если зажаты обе кнопки, или надо в условии под условие сделать . хотя черт его знает я любитель ).
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
09.01.2016, 20:35
NIKOLAYY,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using UnityEngine;
using System.Collections;
 
public class PersPosition : MonoBehaviour {
  public float speed = 3;
  public GameObject MyGameObject;
  
  void Update () {
    Vector2 speed = new Vector2 (0f, GetComponent<Rigidbody2D>().velocity.y);
    //если зажата клавиша право
    if (Input.GetKey(KeyCode.RightArrow)) {
      speed += Vector2.right * speed;
    }
    
    //тоже самое только влево
    if (Input.GetKey (KeyCode.LeftArrow)) {
      speed += (Vector2.right * speed) * -1;
    }
    
    //прыжок
    if (Input.GetKeyDown (KeyCode.Space)) {
      speed += Vector2.up * 2f;
    }
      GetComponent<Rigidbody2D>().velocity = speed;
  }
}
Как-то так, например.
1
 Аватар для cortexdeveloper
8 / 8 / 3
Регистрация: 31.07.2015
Сообщений: 71
09.01.2016, 23:26
Привет, вот статья моя на хабре
*типа хвастаюсь
http://habrahabr.ru/post/264611/

Добавлено через 33 секунды
Детский сад сразу пролистай, сам скрипт ниже.
1
9035 / 2936 / 493
Регистрация: 05.10.2013
Сообщений: 7,958
Записей в блоге: 216
09.01.2016, 23:51
В этом туториале показано, как сделать движения, как в Марио, а так же стрельбу, как в Марио: Advanced Unity 2D Platformer-Player Movement

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

Курс можно легко найти в инете. Можно весь курс не скачивать, а скачать и открыть только финальный проект.
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
10.01.2016, 00:42  [ТС]
Cr0c, Да как то не откомпилил, ошибку пишет и все..
ошибка CS0019: Оператор `* 'не может быть применен к операндам типа` UnityEngine.Vector2' и `UnityEngine.Vector2"

cortexdeveloper, 8Observer8,
Сейчас посмотрю.
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
10.01.2016, 01:22  [ТС]
cortexdeveloper,
Хорошая статья, у меня в принципе почти все так же только у меня не UI-кнопки, а кнопки из спрайтов.

Движение кнопкой с правой стрелкой переписал так что не физическим движком силу добавляем, а меняем transform так вроде чуть получше откликается, но пропала инерция у персонажа, но дело и не в этом.

Дело в том что все так же когда персонаж бежит он неможет подпрыгнуть.
Это тестил на реальном устройстве, так как на компьютере мышкой нажать за один раз можно только на одну кнопку!

Код бега:
C#
1
2
3
4
5
6
7
8
9
10
11
12
using UnityEngine;
using System.Collections;
 
public class KnopkaLevo : MonoBehaviour {
  public float speed = 3;
  public Vector3 direction = new Vector3 (1, 0, 0);
  public GameObject MyGameObject;
 
    public void OnMouseDrag() { // Эта функция вызывается пока зажата кнопка.
    MyGameObject.transform.Translate (direction * speed * Time.deltaTime);
   }
}
И код прыжка тот же:
C#
1
2
3
4
5
6
7
8
9
10
11
using UnityEngine;
using System.Collections;
 
public class KnopkaJump : MonoBehaviour {
    public GameObject MyGameObject;
 
    public void OnMouseDown() { // Одноразовое нажатие
 
        MyGameObject.GetComponent<Rigidbody2D> ().AddForce (Vector2.up * 300);
    }
}
Как бы все работает, но чтобы прыгнуть нужно остановиться!
А это как бы не дело... (
Миниатюры
Движение персонажа типа марио  
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
10.01.2016, 07:58
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using UnityEngine;
using System.Collections;
 
public class PersPosition : MonoBehaviour {
  public float speed = 3;
  public GameObject MyGameObject;
  
  void Update () {
    Vector2 Qspeed = new Vector2 (0f, GetComponent<Rigidbody2D>().velocity.y);
    //если зажата клавиша право
    if (Input.GetKey(KeyCode.RightArrow)) {
      Qspeed += Vector2.right * speed;
    }
    
    //тоже самое только влево
    if (Input.GetKey (KeyCode.LeftArrow)) {
      Qspeed += (Vector2.right * speed) * -1;
    }
    
    //прыжок
    if (Input.GetKeyDown (KeyCode.Space)) {
      Qspeed += Vector2.up * 2f;
    }
      GetComponent<Rigidbody2D>().velocity = Qspeed;
  }
}
Две одноименных переменных было, можно же заметить.
1
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
11.01.2016, 02:36  [ТС]
Цитата Сообщение от Cr0c Посмотреть сообщение
Две одноименных переменных было, можно же заметить.
Понял сейчас попробую.

Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Дело в том что все так же когда персонаж бежит он неможет подпрыгнуть.
Народ я кажется понял в чем причина!

Я сейчас оттестил код такого вида под мобильное устройствоо:
Кинул на форму два спрайта и на каждом при нажатии написал подкрасится в серый цвет.

- Жму на один спрайт - серый
- Жму на второй - спрайт тоже серый

Жму сразу на два! Какой то один из них серый, автрой не жмется уже!

Я все к чему говорю что OnMouseDown неподходит для мобильных устройств!
Все так же как в компе нельзя мышью нажать на две какие либо кнопки в любой программе!

В устройстве думаю лучше использовать touch!
Тогда сразу нажмем две кнопки (два спрайта) движение и прыжок!

Это пока предположение я еще не тестил но думаю отработает правильнее код!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.01.2016, 02:36
Помогаю со студенческими работами здесь

Движение персонажа
Всем привет! Подскажите как сделать движение персонажа на С# как в игре Subway surfers?

Движение персонажа
Как сделать так что б персонажа двигался в направлении камеры, вот моя попытка Turn = myCam.transform.rotation.eulerAngles.y;...

Движение персонажа
Здравствуйте! Как сделать движение и отражение персонажа. я сделала движение вправо-влево и сделала отражение но работает неккоректно....

Движение персонажа 2д
Приветствую! Делаю 2д платформер. Правильно ли я делаю движение персонажа? Если делать так, то персонаж как то медленно падает. ...

Движение персонажа 2d платформер
Здравствуйте! Нужно сделать движение персонажа в 2д платформере, пока что только влево/вправо. GetAxis настроил так, чтобы при движении...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru