Neodrop писал(а):Он и так прекрасно поднимается. Если у вас черезчур крутые ступени, поставьте поверх них невидимую колизионную плоскость как пандус.
//было
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
//станет
moveDirection = new Vector3(0, Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
Neodrop писал(а):Пошевелите мозгами малость самостоятельно.
Blitz писал(а):или скриптиком когда коллайдер игрока стукается об коллайдер лестници поднимать игрока с определённой скоростью или понаставить невидимых плоскостей и прыгать на лестнице, тем самым поднимаясь (см. нормали).Neodrop писал(а):Пошевелите мозгами малость самостоятельно.
это да! но для этого нужнo как опыт/знания, так и умение абстрактно мыслить, а этого к сожелению нет у многих.
WebWolf: если у вас ММО или убийца какой-то игры 21ого века то отложите его на месяца 3-4. а если расширяете FPS тутор то кроссавчег! в нужном месте взялись =)
Neodop: не обижайте так молодняк. им абстракции в мышлении не хватает, да и не знают (понятия не имеют) как устроены действия изнутри. если кто-то не учил программирование или мультимедийные приложения в школе/универе/ПТУ... это не их вина.
function OnTriggerEnter (other : Collider) {
FPSWalker.lestnica = 1;
}
function OnTriggerExit (other : Collider) {
FPSWalker.lestnica = 2;
}
var jumpSpeed = 8.0;
var gravity = 20.0;
static var lestnica = 0;
private var moveDirection = Vector3.zero;
private var grounded : boolean = false;
function FixedUpdate() {
if ((grounded) && (lestnica == 0)) {
// 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;
}
}
// Apply gravity
moveDirection.y -= gravity * Time.deltaTime;
if (lestnica == 1) {
moveDirection *= 0;
moveDirection.y += (Input.GetAxis("Vertical") * 2);
}
if (lestnica == 2) {
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
lestnica = 0;
}
// Move the controller
var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.CollidedBelow) != 0;
}
@script RequireComponent(CharacterController)
И все же в проектах к каждой лестнице нужен свой подход.
Эти скрипты просто как примеры, дальше сами.
Левш@ писал(а):И все же в проектах к каждой лестнице нужен свой подход.
Эти скрипты просто как примеры, дальше сами.
Все там можно, коллайдер надо настроить.
У себя сделал и поднимается и спускается.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2