Пятница, 29 Марта 2024, 17:08

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Управление
Управление
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
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Управление
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг