FPSwalker.js — передвижение во время прыжка

http://forum.unity3d.com/viewtopic.php?p=343503#343503

Этот измененный стандартный FPSWalker.js позволит игроку управлять передвижением даже в воздухе.

var speed = 6.0;
var jumpSpeed = 8.0;
var gravity = 20.0;
private var moveDirection = Vector3.zero;
private var grounded : boolean = false;
private var lastYSpeed : float = 0;
function FixedUpdate() {
if (grounded)
{
// We are grounded, so recalculate movedirection directly from axes
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton ("Jump")) {
moveDirection.y = jumpSpeed;
}
// On the ground
lastYSpeed = 0;
}
else
{
// We are in the air, maintain lastYSpeed
moveDirection = new Vector3(Input.GetAxis("Horizontal"), lastYSpeed, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
// Remove speed factor from influencing Y value
moveDirection.x *= speed;
moveDirection.z *= speed;
}
// Apply gravity
moveDirection.y -= gravity * Time.deltaTime;
lastYSpeed = moveDirection.y;
// Move the controller
var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.CollidedBelow) != 0;
}
@script RequireComponent(CharacterController)

FPSwalker.js — передвижение во время прыжка: Один комментарий

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s