# Direction of rotation and ApplyForce

 0 Hello, I am trying to write a function which will create a visual vector on a rigidbody. Then this vector can be rotated with mouse. When vecotr rotation is finished a force is added to that rigidbody. My code is not working and I'd like to hear tips and suggestions. Thanks in advance for your answers. ``````var arrowPrefab : GameObject; var speed : int; var forceMultiplyer : float; private var arrowInstance : GameObject; function Update () { if (Input.GetMouseButton(1)) { if (arrowInstance == null) { arrowInstance = Instantiate(arrowPrefab, transform.position, Quaternion.identity); } else { if (Input.GetMouseButton(0)) { arrowInstance.transform.Rotate(0, 0, Input.GetAxis("Mouse Y") * Time.deltaTime * speed); } else { arrowInstance.transform.Rotate(Vector3(Input.GetAxis("Mouse Y"), Input.GetAxis("Mouse X"), 0) * Time.deltaTime * speed); } } } if (Input.GetMouseButtonUp(1)) { if (arrowInstance != null) { var forceVector : Vector3 = new Vector3(forceMultiplyer, forceMultiplyer, forceMultiplyer); rigidbody.AddForce(arrowInstance.transform.rotation * forceVector); Destroy(arrowInstance); } } } `````` more ▼ asked Oct 17 '11 at 07:56 PM kernel_mode 1 ● 1 ● 1 ● 1 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

 0 If your problem is the force direction (forceVector is pointing to the middle of the 3 axes), you can use arrowInstance.transform.forward: ``` if (Input.GetMouseButtonUp(1)) { if (arrowInstance != null) { rigidbody.AddForce(arrowInstance.transform.forward * forceMultiplyer); Destroy(arrowInstance); } } ``` more ▼ answered Oct 18 '11 at 01:05 AM aldonaletto 41.4k ● 16 ● 42 ● 197 Yes, the problem is the force direction. If I use your code the force is applied wrong. I want the force vector direction to be the same with my arrowInstance direction. As I said before, arrowInstance can be rotated in 3 axes. Thanks. Oct 18 '11 at 07:14 PM kernel_mode And to which direction the arrow model tip is pointing to? Z, Y or X? I assumed the model tip points to Z, and thus used transform.forward. If the model tip points to Y, you must use transform.up; if points to X, transform.right. Notice that I'm talking about the arrow model: when you drag it to the scene, it comes with null rotation, and you can see to which axis the arrow tip initially points. Oct 18 '11 at 07:44 PM aldonaletto Oh, thanks. It was transform.up. Oct 19 '11 at 05:43 PM kernel_mode add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

By Email:

Topics:

x1866
x1787
x439
x292
x195

asked: Oct 17 '11 at 07:56 PM

Seen: 998 times

Last Updated: Oct 19 '11 at 05:43 PM