- Home /
Shoot player away after loading force.
Dear unity community,
I am trying to shoot away my player after loading an amount of force by holding down a button, I am a student just starting with C#.
So basically, if I hold down the space bar, it will load force, when I release space bar the player should shoot away with the force given. Compare it with a catapult shooting a rock away.
I tried the following, but with this I can only fly with the player by holding down the space bar.I know the script doesn't do anything after releasing space, but what I tried didn't work so I left it out.
using UnityEngine;
using System.Collections;
public class playerShoot: MonoBehaviour {
public float maxCharge = 50.0f;
public float JForce = 10.0f;
public float increaseForce = 10.0f;
public float chargeSpeed = 10.0f;
public float resetSpeed = 10.0f;
public float sidewaySpeed = 10.0f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
increasePower ();
if (Input.GetKey (KeyCode.Space)) {
rigidbody2D.AddForce (new Vector2 (sidewaySpeed, JForce));
}
}
void increasePower () {
if (Input.GetButton("Increase")) {
JForce += Time.deltaTime * chargeSpeed;
Debug.Log (JForce);
JForce = Mathf.Clamp(JForce, 0, maxCharge);
}
if (Input.GetButtonUp("Jump")) {
JForce = resetSpeed;
Debug.Log (JForce + "Force reseted");
}
}
}
Thank you in advance for helping me!
Kind regards,
Marijn
Hi there, In your Update() "increasePower();" should be below " if (Input.Get$$anonymous$$ey ($$anonymous$$eyCode.Space)) {rigidbody2D.AddForce (new Vector2 (sidewaySpeed, JForce));}" because this way you reset your JForce ("JForce = resetSpeed;") before force can be even applied. (try much highier force numbers if that doesn't work)
Thank you! Can't find where to give you a tumbs up or choose this as the right answer, but I thank you!
Answer by marijnroukens · Jan 22, 2015 at 02:20 PM
"Hi there, In your Update() "increasePower();" should be below " if (Input.GetKey (KeyCode.Space)) {rigidbody2D.AddForce (new Vector2 (sidewaySpeed, JForce));}" because this way you reset your JForce ("JForce = resetSpeed;") before force can be even applied. (try much highier force numbers if that doesn't work)"
Thanks to andrew lukasik (http://answers.unity3d.com/users/89004/andrew-lukasik.html) !
Your answer
Follow this Question
Related Questions
[Solved] How to shoot an object in front of the player? 1 Answer
if mouse button is pressed continual add force from min. to max.and then shoot a ball 2 Answers
Firing projectile in curve 1 Answer
Stopping objects with colliding with similar objects. 1 Answer
Reuse player's script for the enemy 1 Answer