I am creating a 2D side-scroller for my first game and I have quite a bit done; however, one thing has been giving me trouble for around a week now. I want to shoot where the user taps, so I figure I need to raycast to the point where the user taps and shoot a projectile there and then destroy it when it collides with an object? I have searched and cant find anything related to this, I found examples for raycasting from the camera to a touch but not from the actual character. Any ideas?
Answer by syclamoth
Feb 29, 2012 at 12:16 AM
Well, in this case you need two things (or possibly 3).
First, you need to know what plane your character is moving on. Usually this would be as simple as creating one with:
Plane dudePlane = new Plane(player.position, Camera.main.forward);
Then, to get the touch position, you can use
Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition)
dudePlane.Raycast(camRay, out point);
Vector3 position = camRay.GetPoint(point);
Then, finally, get the actual ray by using
Ray shotRay = new Ray(player.position, (position - player.position));
Now, you can use this ray however you like- for shooting a projectile, for calculating a hitscan, anything.
Yeah, actually 3.
is that C#, boo, or js? I cant tell lol
This is pretty obviously C#.
How can i use that ray with a shoot function that uses a rigidBody and addForce?
@syclamoth can you please help me out in the case where i want to move my player to touch position on Android device gradually but not instantly.
Answer by ChrisMasterton
Feb 29, 2012 at 12:29 AM
First convert the touch position into world coordinates. Then you can raycast from the players position to the target position in world space.
Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.
The best place to ask and answer questions about development with Unity.
To help users navigate the site we have posted a user guide.
If you are a new user, check out our FAQ for more information.
If you are a moderator, see our Moderator Guidelines page.
We are making improvements to UA, see the list of changes.
For troubleshooting common problems with Unity 5.x Editor (including Win 10).
Answers and Comments
7 People are following this question.
Different animations on mobile
getPressure for touch pressure on Android or iOS
Unity 2D Mobile Game Drawing Mechanic
Mobile - lingering touch even after finger lifts
Detect When GUI.Text Field gets focus.