hey guys i have a wierd ass problem when i run my code in the editor my player walks normal speed but when i build it in unity 4 (pro) i run hyperspeed ![]()
here is the controller script:
/// <summary>
/// FPS input controller.
/// Pierce Thompson
/// 2012
/// Created For Radiation
/// Version 1.0
/// First Version Of Script
/// </summary>
using UnityEngine;
using System.Collections;
public class FPSInputController : MonoBehaviour
{
#region Input Variables(float, Vector3, bool, Object)
//Floats
public float Speed = 3.5F;
public float SprintSpeed = 6.0F;
public float JumpSpeed = 100.0F;
public float Gravity = 90.0F;
public float SprintInitTime = 0.2F;
public float SprintEndTime = 0.2F;
//GameObjects
public GameObject Gun;
public GameObject ShootPoint;
//Vector3's
private Vector3 MoveDirection = Vector3.zero;
//Bool's
public bool Grounded = false;
public bool IsSprinting = false;
public bool InitiatedSprint = false;
public bool Falling = false;
#endregion
void Start()
{
Gun = GameObject.FindGameObjectWithTag("Gun");
ShootPoint = GameObject.FindGameObjectWithTag("ShootPoint");
}
#region Update Function
void Update()
{
#region Grounded
if(Grounded)
{
if(!IsSprinting)
{
MoveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
MoveDirection = transform.TransformDirection(MoveDirection);
MoveDirection *= Speed;
}
}
if(IsSprinting !ShootPoint.GetComponent<RayShoot>().IsAiming)
{
MoveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
MoveDirection = transform.TransformDirection(MoveDirection);
MoveDirection *= SprintSpeed;
}
if(!ShootPoint.GetComponent<RayShoot>().IsReloading !ShootPoint.GetComponent<RayShoot>().IsAiming)
{
if(Input.GetKeyDown(KeyCode.LeftShift) !InitiatedSprint)
{
Gun.animation.Play("StartSprint");
StartCoroutine(SprintInit());
}
if(Input.GetKey (KeyCode.LeftShift) InitiatedSprint)
{
Gun.animation.Play("Sprint");
}
if(Input.GetKeyUp(KeyCode.LeftShift))
{
Gun.animation.Play("StopSprint");
StartCoroutine(SprintEnd());
}
}
#endregion
#region Not Grounded
if(Grounded !IsSprinting)
{
if(Input.GetKeyDown(KeyCode.Space))
{
StartCoroutine(SprintEnd());
Gun.animation.Play("StopSprint");
if(!ShootPoint.GetComponent<RayShoot>().IsAiming)
{
MoveDirection.y = JumpSpeed;
Gun.animation.Play("Jump");
}
if(ShootPoint.GetComponent<RayShoot>().IsAiming)
{
MoveDirection.y = JumpSpeed;
Gun.animation.Play("JumpWhileAimed");
}
}
}
#endregion
#region Gravity
MoveDirection.y -= Gravity * Time.deltaTime;
#endregion
#region Character Controller
var Controller = GetComponent<CharacterController>();
var flags = Controller.Move(MoveDirection * Time.deltaTime);
Grounded = (flags CollisionFlags.CollidedBelow) !=0;
#endregion
}
#endregion
IEnumerator SprintInit()
{
yield return new WaitForSeconds(SprintInitTime);
InitiatedSprint = true;
IsSprinting = true;
}
IEnumerator SprintEnd()
{
yield return new WaitForSeconds(SprintEndTime);
InitiatedSprint = false;
IsSprinting = false;
}
}
And The Shooting Script
/// <summary>
/// Ray shoot.
/// Pierce Thompson
/// 2012
/// Created For Radiation
/// Version 1.0
/// First Version Of Script
/// </summary
using UnityEngine;
using System.Collections;
public class RayShoot : MonoBehaviour
{
public float Range = 1000;
public float Force = 500;
public float ReloadTime = 3.3F;
public float ShootTimer = 0.0F;
public float ShootCooler = 0.8F;
public int Clips = 60;
public int BulletsPC = 40;
public int BulletsL = 0;
public GameObject Gun;
public GameObject Player;
public bool IsAiming = false;
public bool IsReloading = false;
public bool IsShooting = false;
public AudioClip ShootAudio;
public AudioClip ReloadAudio;
// Use this for initialization
void Start()
{
Gun = GameObject.FindGameObjectWithTag("Gun");
Player = GameObject.FindGameObjectWithTag("Player");
BulletsL = BulletsPC;
}
// Update is called once per frame
void Update()
{
if(ShootTimer > 0)
{
ShootTimer -= Time.deltaTime;
}
if(ShootTimer < 0)
{
ShootTimer = 0;
}
if(Input.GetButton("Fire1") !IsReloading !Player.GetComponent<FPSInputController>().IsSprinting)
{
if(ShootTimer == 0)
{
Shoot();
ShootTimer = ShootCooler;
}
}
if(Input.GetKeyDown(KeyCode.R) !IsAiming !IsReloading !Player.GetComponent<FPSInputController>().IsSprinting)
{
Reload();
}
if(Input.GetButtonDown("Fire2") !IsReloading !IsAiming !Player.GetComponent<FPSInputController>().IsSprinting)
{
IsAiming = true;
Gun.animation.Play("AimIn");
Camera.main.fieldOfView = 40;
}
if(Input.GetButtonUp("Fire2") !IsReloading IsAiming !Player.GetComponent<FPSInputController>().IsSprinting)
{
Gun.animation.Play("AimOut");
IsAiming = false;
Camera.main.fieldOfView = 60;
}
}
void Shoot()
{
RaycastHit Hit;
IsShooting = true;
Vector3 DirectionRay = transform.TransformDirection(Vector3.forward);
Debug.DrawRay(transform.position, DirectionRay * Range, Color.magenta);
if(!IsAiming)
{
Gun.animation["Fire"].speed = 1.5F;
Gun.animation.Play("Fire");
}
if(IsAiming)
{
Gun.animation["FireInAim"].speed = 2.0F;
Gun.animation.Play("FireInAim");
}
PlayShootAudio();
if(Physics.Raycast(transform.position, DirectionRay, out Hit, Range))
{
if(Hit.rigidbody)
{
Hit.rigidbody.AddForceAtPosition(DirectionRay * Force, Hit.point);
}
}
BulletsL--;
if(BulletsL < 0)
{
BulletsL = 0;
}
if(BulletsL == 0 !IsAiming)
{
Reload();
}
IsShooting = false;
}
void Reload()
{
if(Clips > 0)
{
IsReloading = true;
Gun.animation["Reload"].speed = 0.6F;
Gun.animation.Play("Reload");
PlayReloadAudio();
StartCoroutine(ReloadTimer());
}
}
IEnumerator ReloadTimer()
{
yield return new WaitForSeconds(ReloadTime);
BulletsL = BulletsPC;
Clips--;
IsReloading = false;
}
void PlayShootAudio()
{
audio.PlayOneShot(ShootAudio);
}
void PlayReloadAudio()
{
audio.PlayOneShot(ReloadAudio);
}
}
I just donโt know why any help??? its wierd