[2D Нужна помощь] Перемещение объекта.
|
|
iWuds | Дата: Вторник, 18 Февраля 2014, 12:37 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Всем добрый день. Вообщем проблема следующая. Как бы только начал разбираться в C# и столкнулся с проблемой при написании скрипта передвижения. У меня при нажатии на W должен происходить прыжок. По сути прыгает, но слишком резко. Как можно сделать так чтобы медленнее и красивее прыжок шёл? А то такое чувство что тупо телепортируется вверх объект и всё. Ниже скрипт, там я пробывал двумя способами, но ни одним не вышло сделать красивше( Код using UnityEngine; using System.Collections;
public class Move : MonoBehaviour { private GameObject player; public float speedJump = 5.0f; public float speedWalk = 0.1f; public int jump = 4; public float speed = 6;
// Use this for initialization void Start () { player = (GameObject)this.gameObject; } // Update is called once per frame void Update () { if (Input.GetKeyDown(KeyCode.W)) { // transform.Translate (new Vector2 (0.0f, speedJump) * Time.deltaTime); player.transform.position += player.transform.up * jump * Time.deltaTime; }
if (Input.GetKey(KeyCode.A)) { transform.Translate (new Vector2 (-speedWalk, 0.0f)); }
if (Input.GetKey(KeyCode.D)) { transform.Translate (new Vector2 (speedWalk, 0.0f)); } } }
Начал разработку игр на HGE. Также работаю в Ps.
|
|
| |
lentinant | Дата: Вторник, 18 Февраля 2014, 13:19 | Сообщение # 2 |
ленивый программист
Сейчас нет на сайте
| Цитата iWuds ( ) По сути прыгает, но слишком резко. Как можно сделать так чтобы медленнее и красивее прыжок шёл? А то такое чувство что тупо телепортируется вверх объект и всё. Потому что, по сути, ты его вверх и телепортируешь. Вообще, обычно прыжок делают с помощью rigidbody.AddForce
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
IlyaKos | Дата: Вторник, 18 Февраля 2014, 14:51 | Сообщение # 3 |
участник
Сейчас нет на сайте
| rigidbody.velocity+=transform.up*JumpForce;
|
|
| |
iWuds | Дата: Вторник, 18 Февраля 2014, 18:10 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| Цитата lentinant ( ) Потому что, по сути, ты его вверх и телепортируешь. Вообще, обычно прыжок делают с помощью rigidbody.AddForce Спасибо, буду знать.
IlyaKos,
А тебе отдельное спасибо за подробности, сейчас опробую.Добавлено (18.02.2014, 18:10) --------------------------------------------- Попробывал, ошибка:
"MissingComponentException: There is no 'Rigidbody' attached to the "player" game object, but a script is trying to access it. You probably need to add a Rigidbody to the game object "player". Or your script needs to check if the component is attached before using it. UnityEngine.Rigidbody.AddForce (Vector3 force) (at C:/BuildAgent/work/d3d49558e4d408f4/artifacts/EditorGenerated/NewDynamics.cs:671) Move.Update () (at Assets/Move.cs:23)"
Начал разработку игр на HGE. Также работаю в Ps.
|
|
| |
robertono | Дата: Вторник, 18 Февраля 2014, 18:25 | Сообщение # 5 |
Чокнутый Кот
Сейчас нет на сайте
| iWuds, английский то надо учить.. Тут самый элементарный английский. Английский тебе очень понадобится в жизни...\ There is no 'Rigidbody' attached to the "player" game object, but a script is trying to access it. Здесь нету rigidbody прикрепленного к player, но скрипт пытается получить доступ к нему. Ты забыл поместить на игрока rigidbody.
|
|
| |
iWuds | Дата: Вторник, 18 Февраля 2014, 18:46 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| robertono, хехех) в том то и дело, что на игрока изначально был помещён Rigidbody в инспекторе - RigidBody2D, до словно то я перевёл ошибку, но вот почему она вызывается я так и не понял. RigidBody то весит на игроке(
Начал разработку игр на HGE. Также работаю в Ps.
|
|
| |
robertono | Дата: Вторник, 18 Февраля 2014, 20:42 | Сообщение # 7 |
Чокнутый Кот
Сейчас нет на сайте
| iWuds, именно 2D ? Я с ним не работал, но если через .rigidbody. не отзывается, а на объекте он есть то можно сделать GetComponent<Rigidbody2D> () . Так он точно найдёт (если всё правильно указать)
|
|
| |
lentinant | Дата: Среда, 19 Февраля 2014, 06:37 | Сообщение # 8 |
ленивый программист
Сейчас нет на сайте
| Цитата robertono ( ) GetComponent<Rigidbody2D> () Не надо искать компонент, он встроен в MonoBehaviour также, как и обычный rigidbody.
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
robertono | Дата: Среда, 19 Февраля 2014, 18:24 | Сообщение # 9 |
Чокнутый Кот
Сейчас нет на сайте
| lentinant, я ж говорю я с ним не работал. В любом случае если так не работает то можно и гет компонент попробовать.. Получить компонент можно только один раз и всё)
|
|
| |