I figured it out on my own, so just delete this post. No reason to keep it around.
How to make a space ship fly after crosshair?
I'm trying to make a game like this: https://www.youtube.com/watch?v=YXWx0H8mZM0 but I can't make my space ship fly in the direction that I point my mouse towards (crosshair). I've tried to use different scripts but I can't make anything work... I've been stuck at this for at least 2 hours now :/
using UnityEngine; using System.Collections;
public class LookAtMouse : MonoBehaviour {
public GameObject player;
// speed is the rate at which the object will rotate
public float speed;
void FixedUpdate() {
// Generate a plane that intersects the transform's position with an upwards normal.
Plane player = new Plane(Vector3.up, transform.position);
// Generate a ray from the cursor position
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
// Determine the point where the cursor ray intersects the plane.
// This will be the point that the object must look towards to be looking at the mouse.
// Raycasting to a Plane object only gives us a distance, so we'll have to take the distance,
// then find the point along that ray that meets that distance. This will be the point
// to look at.
float hitdist = 0.0f;
// If the ray is parallel to the plane, Raycast will return false.
if (player.Raycast(ray, out hitdist)) {
// Get the point along the ray that hits the calculated distance.
Vector3 targetPoint = ray.GetPoint(hitdist);
// Determine the target rotation. This is the rotation if the transform looks at the target point.
Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
// Smoothly rotate towards the target point.
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);
}
}
}
Answer by FuzzyQuills · Oct 11, 2015 at 10:40 PM
Hey there dude. :) From what you're describing, you want the reticle (aka. target) to move the ship like Star Fox 64? (Or any star fox game i've seen anyway... :D)
In such a case, you would first convert your screen corrdinates into normalized viewport (0..1 range) ones, then take Vector2(0.5,0.5) away from your reticle's coords. This will give you a vector you can then transform into some other coordinate space. (Not sure which coordinate space though... will have to do some research on that)
I never played Star Fox 64... I was thinking like star wars rogue squadron, where the spaceship follows the crosshair, so that the camera keeps following behind the ship regardless of which direction that I point my spaceship towards.
Do you have a tutorial or something I could watch/read? I didn't really understand what you said :/ I'm a fairly inexperienced programmer.
PS. sorry about the late reply!
Follow this Question
Related Questions
How can I make the character turn to face the camera? 0 Answers
Problem with fireing multiple raycasts at once 0 Answers
Object with fixed position but follows camera rotation 0 Answers
3rd person character controller rotation keeps resetting to 0 0 Answers
How to fix "the type or namespace ".." could not be found" in unity 0 Answers