Help me (416593)

Can anyone add “Prone” mode to this script.
I have standing, and crouch, but need prone(laying down).
Also I get this error on this script.
“IndexOutOfRangeException: Array index is out of range.
FPSPlayer+PlayStepSounds$26+$.MoveNext () (at Assets\LEVEL\WeaponScripts\FPSPlayer.js:78)”

Thanks

private var speed = 6.0;
var aimSpeed = 2.0;
var sprintSpeed = 10.0;
private var canSprint : boolean = true;

var sprintJumpSpeed = 8.0;
var normSpeed = 6.0;
var crouchSpeed = 6.0;
var crouchDeltaHeight = 1.0;
var jumpSpeed = 8.0;
var normJumpSpeed = 8.0;
var gravity = 20.0;
private var mainCamera : GameObject;
private var weaponCamera : GameObject;
static var crouching : boolean = false;
private var stopCrouching : boolean = false;
private var standardCamHeight : float;
private var crouchingCamHeight : float;

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

static var walking : boolean = false;

function Start() {
speed = normSpeed;
mainCamera = gameObject.FindWithTag(“MainCamera”);
weaponCamera = gameObject.FindWithTag(“WeaponCamera”);
crouching = false;
standardCamHeight = mainCamera.transform.localPosition.y;
crouchingCamHeight = standardCamHeight - crouchDeltaHeight;
}

function Update() {
if(mainCamera.transform.localPosition.y > standardCamHeight){
mainCamera.transform.localPosition.y = standardCamHeight;
} else if(mainCamera.transform.localPosition.y < crouchingCamHeight){
mainCamera.transform.localPosition.y = crouchingCamHeight;
}
if(weaponCamera.transform.localPosition.y > standardCamHeight){
weaponCamera.transform.localPosition.y = standardCamHeight;
} else if(weaponCamera.transform.localPosition.y < crouchingCamHeight){
weaponCamera.transform.localPosition.y = crouchingCamHeight;
}

if (Input.GetButtonDown (“Crouch”)){
if(crouching){
stopCrouching = true;
normalSpeed();
return;
}

if(!crouching)
crouch();
}
if(crouching){
if(mainCamera.transform.localPosition.y > crouchingCamHeight){
if(mainCamera.transform.localPosition.y - (crouchDeltaHeightTime.deltaTime8) < crouchingCamHeight){
mainCamera.transform.localPosition.y = crouchingCamHeight;
} else {
mainCamera.transform.localPosition.y -= crouchDeltaHeightTime.deltaTime8;
}
}
if(weaponCamera.transform.localPosition.y > crouchingCamHeight){
if(weaponCamera.transform.localPosition.y - (crouchDeltaHeightTime.deltaTime8) < crouchingCamHeight){
weaponCamera.transform.localPosition.y = crouchingCamHeight;
} else {
weaponCamera.transform.localPosition.y -= crouchDeltaHeightTime.deltaTime8;
}
}
} else {
if(mainCamera.transform.localPosition.y < standardCamHeight){
if(mainCamera.transform.localPosition.y + (crouchDeltaHeightTime.deltaTime8) > standardCamHeight){
mainCamera.transform.localPosition.y = standardCamHeight;
} else {
mainCamera.transform.localPosition.y += crouchDeltaHeightTime.deltaTime8;
}
}
if(weaponCamera.transform.localPosition.y < standardCamHeight){
if(weaponCamera.transform.localPosition.y - (crouchDeltaHeightTime.deltaTime8) > standardCamHeight){
weaponCamera.transform.localPosition.y = standardCamHeight;
} else {
weaponCamera.transform.localPosition.y += standardCamHeightTime.deltaTime8;
}
}

}

}
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;
if(crouching){
stopCrouching = true;
normalSpeed();
}
}

}

// Apply gravity
moveDirection.y -= gravity * Time.deltaTime;

// Move the controller
var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags CollisionFlags.CollidedBelow) != 0;

if((Mathf.Abs(moveDirection.x) > 0) grounded || (Mathf.Abs(moveDirection.z) > 0 grounded)){
if(!walking){
walking = true;
BroadcastMessage(“walking”, SendMessageOptions.DontRequireReceiver);
}
} else if(walking){
walking = false;
BroadcastMessage(“stopWalking”, SendMessageOptions.DontRequireReceiver);
}
}

@script RequireComponent(CharacterController)

function aiming() {
speed = aimSpeed;
}

function crouch() {
speed = crouchSpeed;
//mainCamera.transform.position.y -= crouchDeltaHeight;
//weaponCamera.transform.position.y -= crouchDeltaHeight;
BroadcastMessage(“crouching”, SendMessageOptions.DontRequireReceiver);
this.GetComponent(BoxCollider).size -= Vector3(0,crouchDeltaHeight, 0);
this.GetComponent(BoxCollider).center -= Vector3(0,crouchDeltaHeight/2, 0);
crouching = true;
}

function normalSpeed () {
if(stopCrouching){
crouching = false;
//mainCamera.transform.position.y += crouchDeltaHeight;
//weaponCamera.transform.position.y += crouchDeltaHeight;
this.GetComponent(BoxCollider).size += Vector3(0,crouchDeltaHeight, 0);
this.GetComponent(BoxCollider).center += Vector3(0,crouchDeltaHeight/2, 0);
BroadcastMessage(“stopWalking”, SendMessageOptions.DontRequireReceiver);

stopCrouching = false;
} else if(crouching){
speed = crouchSpeed;
return;
}
speed = normSpeed;
jumpSpeed = normJumpSpeed;
}
function sprinting () {
if(crouching){
crouching = false;
//mainCamera.transform.position.y += crouchDeltaHeight;
//weaponCamera.transform.position.y += crouchDeltaHeight;
this.GetComponent(BoxCollider).size += Vector3(0,crouchDeltaHeight, 0);
this.GetComponent(BoxCollider).center += Vector3(0,crouchDeltaHeight, 0);

}
if(canSprint){
speed = sprintSpeed;
jumpSpeed = sprintJumpSpeed;
}
}

Come on
Anyone
Please

You’re going to have a hard time finding people to write your game for you for free, especially if you only wait 20 minutes for a reply. Also, it’s hard to read code that isn’t embedded inside of code tags. Without proper formatting, it’s not really even worth trying to read.

What exactly should “prone mode” do? Just move the camera near to the ground or something? What problems have you encountered while trying to add it yourself? In what way is it not behaving correctly?

.

So true. There is no reward and freedom like learning to code yourself, and its no easy task. If you have gone throug the tutorials and read some of the online doc’s it will help you better understand the code and then you wont have to wait for a reply.

Remember the old saying, Give someone a fish and they eat for a day but teach them to fish and they eat for life. 8)

What is the easiest way to learn scripting.
Thanks

There’s a good JavaScript tutorial in this thread. Once you have gone through that, you will probably find the tutorials useful for learning the workings of Unity itself.

The trial and error method works too, find all the code that deals with crouch. Duplicate it all and rename crouch to prone. Then adjust the values until it works. That’s a hands on approach. Not to mention if you submit broken code that you have at least tried on it’s more likely that you will get help.