Question by
Michael2D · Nov 05, 2016 at 06:34 PM ·
characteranimationsjson
Armed Unity Parkour
Hi can someone help me how to add animations to AU parkour???
var hitConfig : boolean = false;
var canClimb : boolean = false;
var climbing : boolean = false;
var once : boolean = false;
private var hit : RaycastHit;
private var endPos : Vector3;
private var endRot : Quaternion;
var distance : float = 2.0;
var layerMask : LayerMask;
var controller : CODcontroller;
var codhealth : CODcontrollerHealth;
var playerweapons : PlayerWeapons;
var vaultSound : AudioClip;
var vaultSound2 : AudioClip;
var vaultSound3 : AudioClip;
var adjust : Vector3;
var cameraGO : Transform;
//We hide our soldier because we don't have proper animation for parkour
var legs : SkinnedMeshRenderer;
var shadowLegs : SkinnedMeshRenderer;
var wep : MeshRenderer;
function Update(){
// just to check if player is in standing position, otherwise disable functionality.
if(cameraGO.transform.localPosition.y != -0.2) return;
var direction : Vector3 = transform.TransformDirection (Vector3.forward);
Debug.DrawRay (transform.position + adjust, direction * distance, Color.green);
if(Physics.Raycast (transform.position + adjust, direction, hit, distance, layerMask)){
var pConf : ParkourConfig = hit.collider.GetComponent("ParkourConfig");
hitConfig = pConf.climbOver;
canClimb = true;
if(Input.GetKey(KeyCode.Space) && !climbing){
endRot = Quaternion.FromToRotation(-Vector3.forward, hit.normal);
endPos = pConf.endPosition;
climbing = true;
MoveObject(transform.position, pConf.climbTime);
}
}else if(Physics.Raycast (transform.position + adjust, direction, hit, distance)){
if(Input.GetKeyDown(KeyCode.Space) && controller.velMagnitude > .1){
controller.JumpFromWall ();
//codhealth.ClimbEffect(0);
}
canClimb = false;
hitConfig = false;
}else{
canClimb = false;
hitConfig = false;
}
if(controller.grounded) adjust = Vector3(0,0,0);
else adjust = Vector3(0,1.8,0);
}
function MoveObject (sPos : Vector3, time : float) {
if(!controller.grounded && playerweapons.weaponsInUse[playerweapons.currentWeapon] != playerweapons.weaponList[0]){
climbing = false;
return;
}
controller.enabled = false;
legs.enabled = true;
shadowLegs.enabled = false;
wep.enabled = false;
if(controller.grounded){
if(playerweapons.weaponsInUse[playerweapons.currentWeapon] != playerweapons.weaponList[0] && playerweapons.currentWeapon != 2){
playerweapons.QuickDeselectWeapon();
yield WaitForSeconds(0.4);
}
}
codhealth.ClimbEffect(1);
//Rotate player
var rotTime = 0.0;
var rotRate = 1.0/0.3;
while (rotTime < 1.0) {
rotTime += Time.deltaTime * rotRate;
transform.rotation = Quaternion.Slerp(transform.rotation, endRot, rotTime);
yield;
}
//Move player
var exitPos : Vector3 = transform.position + (transform.forward * endPos.z) + (transform.up * endPos.y);
var t = 0.0;
var rate = 1.0/time;
while (t < 1.0) {
t += Time.deltaTime * rate;
transform.position = Vector3.Lerp(sPos, exitPos, t);
if(t > 0.1 && !once){
once = true;
if(adjust.y > 0.0 ){
PlaySounds(vaultSound, transform.position, 0.8);
}else{
if(hitConfig){
codhealth.ClimbEffect(2);
PlaySounds(vaultSound, transform.position, 0.8);
}else{
codhealth.ClimbEffect(1);
PlaySounds(vaultSound2, transform.position, 1.0);
}
}
}
yield;
}
once = false;
climbing = false;
controller.enabled = true;
controller.moveDirection = Vector3.zero;
controller.state = 1;
//codhealth.ClimbEffect(0);
yield WaitForSeconds(0.3);
controller.state = 0;
if(playerweapons.currentWeapon != 2){
playerweapons.SelectWeapon(playerweapons.currentWeapon, 1);
}
legs.enabled = true;
shadowLegs.enabled = true;
wep.enabled = true;
}
function OnGUI(){
if(!climbing && canClimb && controller.grounded){
if(hitConfig){
GUI.Label(Rect(Screen.width/2 - 161, Screen.height/2 + 201, 350, 100), "<color=black><size=24>Press</size> <b><size=30>Space</size></b> <size=24>to climb \n over obstacle.</size></color>");
GUI.Label(Rect(Screen.width/2 - 160, Screen.height/2 + 200, 350, 100), "<color=orange><size=24>Press</size> <b><size=30><color=green>Space</color></size></b> <size=24>to climb \n over obstacle.</size></color>");
}else{
GUI.Label(Rect(Screen.width/2 - 161, Screen.height/2 + 201, 350, 100), "<color=black><size=24>Press</size> <b><size=30>Space</size></b> <size=24>to climb \n on obstacle.</size></color>");
GUI.Label(Rect(Screen.width/2 - 160, Screen.height/2 + 200, 350, 100), "<color=orange><size=24>Press</size> <b><size=30><color=green>Space</color></size></b> <size=24>to climb \n on obstacle.</size></color>");
}
}
}
function PlaySounds (clip : AudioClip, position : Vector3, volume : float) {
var go = new GameObject ("One shot audio");
go.transform.position = position;
var source : AudioSource = go.AddComponent (AudioSource);
source.clip = clip;
source.volume = volume;
//source.pitch = Random.Range(0.9,1.1);
source.Play ();
Destroy (go, clip.length);
return source;
}
Thank you! :)
Comment