TESB | Дата: Воскресенье, 12 Октября 2014, 02:21 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Я вот сделал: Прыжки,ускорение,вперед,назад,влево,вправо, а остальное как? Например "Как присесть" помогите со скриптом Вот мой скрипт using UnityEngine; using System.Collections;
public class MovePlayer : MonoBehaviour { private float speed = 6.0F; public float speedStep = 6.0f; public float speedShift = 9.0f; public float gravity = 20.0F; public float jump1 = 8; private Vector3 moveDirection = Vector3.zero; private CharacterController controller; public KeyCode up; public KeyCode down; public KeyCode left; public KeyCode right; public KeyCode shift; public KeyCode jump; private bool _visible; void Start () { controller = GetComponent<CharacterController>(); } void Update() { if (controller.isGrounded) { int x; int y; if(Input.GetKey(up)) x = 1; else if(Input.GetKey(down)) x = -1; else x = 0; if(Input.GetKey(left)) y = -1; else if(Input.GetKey(right)) y = 1; else y = 0; moveDirection = new Vector3(y, 0, x); moveDirection = transform.TransformDirection(moveDirection); moveDirection *= speed; if (Input.GetKey(shift)) speed = speedShift; else speed = speedStep; if(Input.GetKeyDown(jump)) { moveDirection += Vector3.up * jump1; } } moveDirection.y -= gravity * Time.deltaTime; controller.Move(moveDirection * Time.deltaTime); if(Input.GetKeyDown(KeyCode.Escape)) _visible = !_visible; } void OnGUI () { if(_visible) { GUI.Box(new Rect((Screen.width - 500)/2, (Screen.height - 500)/2, 500, 500), "Смена управления"); GUI.Label(new Rect((Screen.width - 500)/2 + 20, (Screen.height - 500)/2 + 20, 200, 30), "Вперед - " + up.ToString()); if(up != KeyCode.None) { if(GUI.Button(new Rect((Screen.width - 500)/2 + 220, (Screen.height - 500)/2 + 20, 100, 20), "Изменить")) { up = KeyCode.None; } } else { if(Event.current.keyCode != KeyCode.Escape && Event.current.keyCode != KeyCode.None) { up = Event.current.keyCode; } } GUI.Label(new Rect((Screen.width - 500)/2 + 20, (Screen.height - 500)/2 + 50, 200, 30), "Назад - " + down.ToString()); if(down != KeyCode.None) { if(GUI.Button(new Rect((Screen.width - 500)/2 + 220, (Screen.height - 500)/2 + 50, 100, 20), "Изменить")) { down = KeyCode.None; } } else { if(Event.current.keyCode != KeyCode.Escape && Event.current.keyCode != KeyCode.None) { down = Event.current.keyCode; } } GUI.Label(new Rect((Screen.width - 500)/2 + 20, (Screen.height - 500)/2 + 80, 200, 30), "Влево - " + left.ToString()); if(left != KeyCode.None) { if(GUI.Button(new Rect((Screen.width - 500)/2 + 220, (Screen.height - 500)/2 + 80, 100, 20), "Изменить")) { left = KeyCode.None; } } else { if(Event.current.keyCode != KeyCode.Escape && Event.current.keyCode != KeyCode.None) { left = Event.current.keyCode; } } GUI.Label(new Rect((Screen.width - 500)/2 + 20, (Screen.height - 500)/2 + 110, 200, 30), "Вправо - " + right.ToString()); if(right != KeyCode.None) { if(GUI.Button(new Rect((Screen.width - 500)/2 + 220, (Screen.height - 500)/2 + 110, 100, 20), "Изменить")) { right = KeyCode.None; } } else { if(Event.current.keyCode != KeyCode.Escape && Event.current.keyCode != KeyCode.None) { right = Event.current.keyCode; } } GUI.Label(new Rect((Screen.width - 500)/2 + 20, (Screen.height - 500)/2 + 140, 200, 30), "Ускорение - " + shift.ToString()); if(shift != KeyCode.None) { if(GUI.Button(new Rect((Screen.width - 500)/2 + 220, (Screen.height - 500)/2 + 140, 100, 20), "Изменить")) { shift = KeyCode.None; } } else { if(Event.current.keyCode != KeyCode.Escape && Event.current.keyCode != KeyCode.None) { shift = Event.current.keyCode; } if(Event.current.modifiers == EventModifiers.Shift) { shift = KeyCode.LeftShift; } } GUI.Label(new Rect((Screen.width - 500)/2 + 20, (Screen.height - 500)/2 + 170, 200, 30), "Прыжок - " + jump.ToString()); if(jump != KeyCode.None) { if(GUI.Button(new Rect((Screen.width - 500)/2 + 220, (Screen.height - 500)/2 + 170, 100, 20), "Изменить")) { jump = KeyCode.None; } } else { if(Event.current.keyCode != KeyCode.Escape && Event.current.keyCode != KeyCode.None) { jump = Event.current.keyCode; } } } } }
|
|
| |
MANMANA | Дата: Воскресенье, 12 Октября 2014, 02:40 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| а присесть - это уже анимация. нажатие кнопки -> проигрывание анимации. Кстати, как у тебя персонаж прыгает? не сгибаясь? смотри пример проигрывания анимации от Левши http://gcup.ru/forum/59-39032-1 в разделе Unity набери "анимаци" и поищи вопросы-ответы, которые иногда возникают у людей. ну и уроки по анимации. если есть готовые анимации - назначай определенным действиям персонажа и скриптом вызывай анимацию и действия для анимации.
и спрячь, пожалуйста, код под спойлер - глаз режет. Особенно ночью. Особенно в темноте :).
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
Сообщение отредактировал MANMANA - Воскресенье, 12 Октября 2014, 02:41 |
|
| |