Yeti писал(а):Помогите доработать скрипт "FPC Walker" некоторыми строчками, чтоб камера опускалась при нажатии клавиши С, например (эффект приседания персонажа).
private var controller : CharacterController;
private var crouch : boolean = false;
private var thdPersonTarget : Transform;
private var thdPersonTargetPos = 1.7;
private var dampVelocity = 0.2;
function Start () {
controller = GetComponent(CharacterController);
thdPersonTarget = GameObject.FindWithTag("ThirdPersonTarget").transform;
}
function Update () {
// Play the sit animation
var newPos = Mathf.SmoothDamp(thdPersonTarget.localPosition.y, thdPersonTargetPos, dampVelocity, .2);
thdPersonTarget.localPosition.y = newPos;
if (Input.GetButtonDown ("Crouch"))
Crouch ();
}
function Crouch () {
if (!crouch) {
crouch = true;
controller.height = 0.9;
controller.center.y = 0.47;
thdPersonTargetPos = 1.0;
} else {
crouch = false;
controller.height = 1.6;
controller.center.y = 0.82;
thdPersonTargetPos = 1.7;
}
}
var speed = 6.0;
var jumpSpeed = 8.0;
var gravity = 20.0;
var cameraAndWeapons : Transform;
var crouchAmount : float = 1.0;
private var controller : CharacterController;
private var moveDirection = Vector3.zero;
private var grounded : boolean = false;
private var crouch : boolean = false;
private var startCamPos : float;
private var camPos : float;
private var dampVelocity = 0.0;
function Start () {
controller = GetComponent(CharacterController);
startCamPos = cameraAndWeapons.localPosition.y;
camPos = startCamPos;
}
function Update () {
// Play the sit animation
var newPos = Mathf.SmoothDamp(cameraAndWeapons.localPosition.y, camPos, dampVelocity, .2);
cameraAndWeapons.localPosition.y = newPos;
if (Input.GetButtonDown ("Crouch"))
Crouch ();
}
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;
}
}
// Apply gravity
moveDirection.y -= gravity * Time.deltaTime;
// Move the controller
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.CollidedBelow) != 0;
}
function Crouch () {
if (!crouch) {
controller.height = 1.0;
controller.center.y = -0.5;
camPos = startCamPos - crouchAmount;
crouch = true;
} else {
controller.height = 2.0;
controller.center.y = 0.0;
camPos = startCamPos;
crouch = false;
}
}
@script RequireComponent(CharacterController)
Vitaly писал(а):Не получается сделать приседание даже с указанным кодом ...FPSWalker...
У всех что-ли получилось с указанным?
Сейчас этот форум просматривают: Google [Bot] и гости: 9