- Home /
Shoot direction
I use a script where the object is flying straight ahead and moving to using the "Axes". How do I make object flew where I click my mouse? I use this script:
public Rigidbody bullet; public float power = 1500f; public float moveSpeed = 2f; public float range = 1f;
private float distance;
void Update () {
float h = Input.GetAxis("Mouse X") * Time.deltaTime * moveSpeed;
float v = Input.GetAxis("Mouse Y") * Time.deltaTime * moveSpeed;
transform.Translate(h, v, 0);
if(Input.GetButtonUp("Fire1"))
{
Rigidbody instance = Instantiate(bullet, transform.position, transform.rotation)as Rigidbody;
Vector3 fwd = transform.TransformDirection(Vector3.forward);
instance.AddForce(fwd * power);
}
}
}
(I can't use Code Formatting... )
I think that I have to change transform.position on what looked like Vector3 mousePosition but do not know how exactly ...
Answer by JoshKingsbury · Sep 13, 2014 at 11:13 PM
If you want the bullet to fly from the location it is created (the transform of the player?), to the point in space where the mouse was clicked, you could try the code below.
It should raycast into the scene from where the mouse is clicked. Then the fwd vector finds out the direction from its current location to the click.
if(Input.GetButtonUp("Fire1"))
{
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
Physics.Raycast( ray, out hit, Mathf.infinity );
Rigidbody instance = Instantiate(bullet, transform.position, transform.rotation) as Rigidbody;
Vector3 fwd = hit.point - transform.position;
instance.AddForce(fwd * power);
}
Your answer
Follow this Question
Related Questions
Improved File Browser - no action 1 Answer
Voice chat, when close to object? c# 1 Answer
Problem to make fireball destroyed when touch terrain, and destroy the clones of it.. 1 Answer
Smooth meshes in Unity 3D 0 Answers
Unity 3D PS3 Version 1 Answer