- Home /
Help combining 2 scripts
Hey guys/gals. I need help combining 2 javascripts I have written into 1 javascript (if possible).
The first script is a character movement script:
private var jumpSpeed:float = 12.0;
private var gravity:float = 32.0;
private var runSpeed:float = 15.0;
private var walkSpeed:float = 45.0;
private var rotateSpeed:float = 150.0;
private var grounded:boolean = false;
private var moveDirection:Vector3 = Vector3.zero;
private var isWalking:boolean = false;
static var dead : boolean = false;
function Update ()
{
// Only allow movement and jumps while grounded
if(grounded)
{
moveDirection = new Vector3((Input.GetMouseButton(1) ? Input.GetAxis("Horizontal") : 0),0,Input.GetAxis("Vertical"));
// if moving forward and to the side at the same time, compensate for distance
if(Input.GetMouseButton(1) && Input.GetAxis("Horizontal") && Input.GetAxis("Vertical"))
{
moveDirection *= .7;
}
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= isWalking ? walkSpeed : runSpeed;
if (Input.GetKeyDown(KeyCode.Space))
{
moveDirection.y = jumpSpeed;
}
}
//Allow turning at anytime. Keep the character facing in the same direction as the Camera if the right mouse button is down.
if(Input.GetMouseButton(1))
{
transform.rotation = Quaternion.Euler(0,Camera.main.transform.eulerAngles.y,0);
}
else
{
transform.Rotate(0,Input.GetAxis("Horizontal") * rotateSpeed * Time.deltaTime, 0);
}
//Toggle walking/running with the Left Shift key
if(Input.GetKeyDown(KeyCode.LeftShift))
{
isWalking = !isWalking;
}
//Apply gravity
moveDirection.y -= gravity * Time.deltaTime;
//Move controller
var controller:CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.Below) != 0;
}
@script RequireComponent(CharacterController)
I am quite happy with how this script turned out, but if you have any suggestions please post em.
The second script I put together quite quickly, as a proof of concept and it works well for what I need. This script simply allows my character to "fly" (move in whatever direction the camera is looking):
#pragma strict
//Acceleration, deceleration, maximum speed
private static var acc = 0.5;
private static var decel = 0.75;
private static var max_speed = 25.0;
private var fly_speed = 0.0;
public var cam : GameObject;
private var moveDirection = Vector3.zero;
function FixedUpdate() {
//move direction is set to where the camera is looking at
moveDirection = cam.transform.forward;
//Accelerate if "f" key is pressed, decelerate if not
if (Input.GetKey ("f"))
{
fly_speed += acc;
}
else
{
fly_speed -= decel;
}
//Debug.Log(fly_speed);
// Clamp speed between 0 and maximum speed
fly_speed = Mathf.Clamp(fly_speed,0,max_speed);
// Move the controller
var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * fly_speed * Time.deltaTime);
}
@script RequireComponent(CharacterController)
I would like to combine these 2 scripts. I have been trying for the last few days but have had no success.
Again, any suggestions or ideas would be helpful. Thx
Comment