- Home /
Shoot Not Letting Me Shoot Twice
In my shooting script, I can shoot on the time of the "meteor" animation at 1.3 fine, but if I try to do it again it will freeze on the last frame and won't produce any projectile. Any body able to help? If my script sucks could someone just write me up one to shoot 1 projectile on the 1.3 time mark (40 frames) of my shooting animation (meteor).
// Movement Variables: private var jumpSpeed:float = 15.0; private var gravity:float = 50.0; private var runSpeed:float = 35; private var walkSpeed:float = 35; private var rotateSpeed:float = 250.0; private var grounded:boolean = false; private var moveDirection:Vector3 = Vector3.zero; private var isWalking:boolean = true; private var isMoveable:boolean = true; private var isCasting:boolean = false; private var isReadyToShoot:boolean = false; private var moveStatus:String = "idle"; private var xSpeed = 250.0; private var ySpeed = 120.0; private var yMinLimit = -40; private var yMaxLimit = 80; private var x = 0.0; private var y = 0.0; private var dead = false; private var savedTime = 0;
var meteorPrefab:Transform;
// ------------------------------------------------------------------------------------------------------------- // -----------------------------------------------------------Animations --------------------------------------- // -------------------------------------------------------------------------------------------------------------
function Do1() { yield WaitForSeconds(1.3); isReadyToShoot = true; }
function Do2() { var meteor = Instantiate(meteorPrefab, GameObject.Find("meteorSpawnPoint").transform.position, transform.rotation); meteor.rigidbody.AddForce(transform.forward * 2000); GameObject.Find("meteorSpawnPoint").active= false; yield WaitForSeconds(0.6); isMoveable = true; isWalking = true; isCasting = false; isReadyToShoot = false; } // ------------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------- Death --------------------------------------- // -------------------------------------------------------------------------------------------------------------
function OnControllerColliderHit(hit : ControllerColliderHit) { if(hit.gameObject.tag == "fallout") { dead = true; //subtract life here HealthControl.LIVES -= 1; } } // ------------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------- Movement --------------------------------------- // -------------------------------------------------------------------------------------------------------------
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(Input.GetMouseButton(1) && Input.GetAxis("Horizontal") && Input.GetAxis("Vertical")) { moveDirection = .7; } moveDirection = transform.TransformDirection(moveDirection); moveDirection = isWalking ? walkSpeed : runSpeed; moveStatus = "idle"; if(moveDirection != Vector3.zero) { moveStatus = isWalking ? "walking" : "running"; if (isWalking) { animation.CrossFade("run"); } else { // call RUN animation here } } else { animation.CrossFade("Take 001"); } } if(isCasting == true) { animation.CrossFade("meteor"); isMoveable = false; isWalking = false; Do1(); } if(isReadyToShoot == true) { Do2(); } // ------------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------- Specials ------------------------------------ // -------------------------------------------------------------------------------------------------------------
// Meteor Special
if(isCasting == false)
{
if(Input.GetKeyDown("1"))
{
isCasting = true;
}
}
// ------------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------- Controls ------------------------------------ // -------------------------------------------------------------------------------------------------------------
// 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 T key
if(Input.GetKeyDown("t"))
{
isWalking = !isWalking;
}
//Apply gravity
if(isMoveable)
{
moveDirection.y -= gravity * Time.deltaTime;
}
//Move controller
if(isMoveable)
{
var controller:CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.Below) != 0;
};
}
static function ClampAngle (angle : float, min : float, max : float) {
if (angle < -360) angle += 360; if (angle > 360) angle -= 360; return Mathf.Clamp (angle, min, max); }
// ------------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------- END UPDATE -------------------------------- // -------------------------------------------------------------------------------------------------------------
function LateUpdate() { if(dead) { transform.position = Vector3(1341.832,0.1636853,1158.249); gameObject.Find("Camera") .transform .position = Vector3(1341.832,0.1636853,1135.249); dead = false; } }
// ------------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------- END LATEUPDATE -------------------------------- // ------------------------------------------------------------------------------------------------------------- @script RequireComponent(CharacterController)
Am i correct in assu$$anonymous$$g that you are suggesting that you want to shoot every 1.3 seconds?
Your answer
Follow this Question
Related Questions
Learning From Nothing to Advanced unity scripting for a teen developer!? 3 Answers
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
My enemy wants to shoot me, but he's got a gut full of lead 1 Answer
2D sidescroller Projectile Script 1 Answer
Script activate after amount of time 3 Answers