Вторник, 28 Мая 2024, 03:56

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Прыжок для персонажа
gggaptypgggДата: Пятница, 29 Июня 2012, 12:19 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Здравствуйте участники форума. У меня есть простой скрипт для передвижения персонажа, я добавил прыжок и хочу сделать так, чтобы он прыгал туда, куда смотрит игрок, примерно на 1 метр. Также, чтобы во время полета, чтобы игрок не мог поворачивать персонажем.

Вот код:
Quote
var speed = 3.0;
var rotateSpeed = 3.0;
var jumpSpeed = 8.0;
var gravity = 25.0;

private var moveDirection = Vector3.zero;

function Update ()
{
var controller : CharacterController = GetComponent(CharacterController);

transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);

var forward = transform.TransformDirection(Vector3.forward);
var curSpeed = speed * Input.GetAxis("Vertical");

if (Input.GetButton("Jump"))
{
moveDirection.y = jumpSpeed;
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
controller.SimpleMove(forward * curSpeed);
}

@script RequireComponent(CharacterController)


IL-98-YAДата: Воскресенье, 01 Июля 2012, 03:52 | Сообщение # 2
UnityUser
Сейчас нет на сайте
насчет того чтобы не поворачивался во время прыжка:
1 добавь bool переменную(например "var IJump : bool"), там где действие поворота укажите в условии :"& IJump == false"
2 добавь условие: "if(moveDirection.y == jumpSpeed)"
3 добавь действие для этого условия: IJump = true;
4 дальше поставь:
"
else
{
IJump = false;
}"
все... вроде должно работать(если я нигде не ошибся)...
насчет прыжка туда куда главный(-ая) герой(-иня) смотрит:
у тебя в скрипте изменяется только прыжок вверх, а надо еще и вперед...
добавь переменную: var JumpSpeedForward : float;
я бы это сделал посредством добавления строчки: rigidbody.AddForce(Vector3.forward * JumpSpeedForward); к действию условия нажатия кнопки прыжок smile
для этого способа нужно чтобы у игрока был компонент ригидбоди... будет прыжок с места... т.е. нажмешь пробел и он прыгнет вверх и вперед





Сообщение отредактировал IL-98-YA - Воскресенье, 01 Июля 2012, 03:55
gggaptypgggДата: Воскресенье, 01 Июля 2012, 15:58 | Сообщение # 3
почетный гость
Сейчас нет на сайте
IL-98-YA, спасибо за ответ. Я сделал по твоему примеру, но вот "сделать так, чтобы он прыгал туда, куда смотрит" я решил изменить. У меня будет 2 прыжка. Прыжок на месте и вперед. Мой код работает вполне корректно, я жму вперед и прыгаю, но когда отпускаю кнопку вперед, то он дальше вперед прыгает, даже если повернусь. Как этого избежать?

вот код:
Quote
var speed = 3.0;
var rotateSpeed = 3.0;
var jumpSpeed = 3;
var gravity = 17.0;

private var moveDirection = Vector3.zero;
private var jumping : boolean = false;

function Update ()
{
var controller : CharacterController = GetComponent(CharacterController);

var forward = transform.TransformDirection(Vector3.forward);
var curSpeed = speed * Input.GetAxis("Vertical");

if(Input.GetButton("Jump"))
{
moveDirection.y = jumpSpeed;
jumping = true;
}
if(controller.isGrounded && !Input.GetButton("Jump")){jumping = false;}
if(!jumping && !Input.GetButton("Jump"))
{
transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);
}
moveDirection.y -= gravity*0.007;
controller.Move(moveDirection * Time.deltaTime);
controller.SimpleMove(forward * curSpeed);
}

@script RequireComponent(CharacterController)


  • Страница 1 из 1
  • 1
Поиск:

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