• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
This question was closed Oct 21, 2015 at 06:36 PM by johnniks for the following reason:

I figured it out on my own, so just delete this post. No reason to keep it around.

avatar image
0
Question by johnniks · Oct 11, 2015 at 03:04 PM · 3dcrosshair3rd person controllerspaceship3rd person camera

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);
     }
 }

}

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

  • Sort: 
avatar image
0

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)

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image johnniks · Oct 21, 2015 at 01:56 PM 0
Share

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!

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

Help With Camera-Dependent 3rd Person Control 0 Answers

How do I get a character to dig underground to another location and vice versa? 0 Answers

3rd Person Shooter Crosshair system 1 Answer

Transform.InverseTransformDirection ALMOST worked with character-facing direction!!!! 1 Answer

Getting a crosshair to project onto the object a barrel is aiming at 0 Answers

  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges