Raycast Mouse Controller, diferencia entre el jugador y el punto de ratón (Tutorial de Survival Shooter) -- # campo con unity3d camp Relacionados El problema

Raycast Mouse Controller ,difference between player and mouse point(Survival Shooter Tutorial)


1
vote

problema

Español

Estoy tratando de entender el código del PlayerController hecho por la unidad (Tutorial de Survival Shooter). Entiendo todo, excepto la razón, por qué escribieron la diferencia entre el punto de pecho (donde se dirige el mouse) y el jugador (Transformar la posición). Intenté escribir solo el punto del piso sin la posición del jugador y funcionó. ¿Por qué escribieron eso? Tal vez alguien pasó este tutorial y me puede ayudar con eso?

Unity Tutorial: https: // unity3d. com / aprende / tutoriales / proyectos / supervivencia-shooter / jugador-personaje? Lista de reproducción = 17144

  using UnityEngine;  public class PlayerMovement : MonoBehaviour {  public float speed= 6f;  Vector3 movement; Animator anim; Rigidbody playerRigidbody; int floorMask; float camRayLength=100f;   void Awake()  {      floorMask = LayerMask.GetMask("Floor");      anim = GetComponent<Animator> ();     playerRigidbody = GetComponent<Rigidbody> ();  }  void FixedUpdate() {     float v = Input.GetAxisRaw ("Vertical");     float h = Input.GetAxisRaw ("Horizontal");      Move (h, v);     Turning ();     Animating(h,v);  }  void Move(float h,float v) {      movement.Set (h,0f,v);      movement = movement.normalized * speed * Time.deltaTime;      playerRigidbody.MovePosition (transform.position+movement); }  void Turning() {     Ray camRay = Camera.main.ScreenPointToRay (Input.mousePosition);      RaycastHit floorHit;      if(Physics.Raycast(camRay,out floorHit,camRayLength,floorMask))       {         Vector3 playerToMouse = floorHit.point-transform.position ;********         playerToMouse.y = 0f;          Quaternion newRotation = Quaternion.LookRotation   (playerToMouse);         playerRigidbody.MoveRotation (newRotation);     } }  void Animating(float h,float v) {     bool wakling = h != 0f || v != 0f;       anim.SetBool("IsWalking",wakling); } }   
Original en ingles

I'm trying to understand the code of the PlayerController made by Unity(Survival Shooter Tutorial).I understand everything, except the reason, why they wrote the difference between FLOOR-POINT(where the mouse is directed) and the player (transform position).I tried to write only the floor point without the player position and its worked.Why they wrote that? Maybe someone passed this tutorial and can help me with that?

Unity tutorial : https://unity3d.com/learn/tutorials/projects/survival-shooter/player-character?playlist=17144

using UnityEngine;  public class PlayerMovement : MonoBehaviour {  public float speed= 6f;  Vector3 movement; Animator anim; Rigidbody playerRigidbody; int floorMask; float camRayLength=100f;   void Awake()  {      floorMask = LayerMask.GetMask("Floor");      anim = GetComponent<Animator> ();     playerRigidbody = GetComponent<Rigidbody> ();  }  void FixedUpdate() {     float v = Input.GetAxisRaw ("Vertical");     float h = Input.GetAxisRaw ("Horizontal");      Move (h, v);     Turning ();     Animating(h,v);  }  void Move(float h,float v) {      movement.Set (h,0f,v);      movement = movement.normalized * speed * Time.deltaTime;      playerRigidbody.MovePosition (transform.position+movement); }  void Turning() {     Ray camRay = Camera.main.ScreenPointToRay (Input.mousePosition);      RaycastHit floorHit;      if(Physics.Raycast(camRay,out floorHit,camRayLength,floorMask))       {         Vector3 playerToMouse = floorHit.point-transform.position ;********         playerToMouse.y = 0f;          Quaternion newRotation = Quaternion.LookRotation   (playerToMouse);         playerRigidbody.MoveRotation (newRotation);     } }  void Animating(float h,float v) {     bool wakling = h != 0f || v != 0f;       anim.SetBool("IsWalking",wakling); } } 
     
     
     

Lista de respuestas

3
 
vote
vote
La mejor respuesta
 

Los raycasts necesitan una dirección, que generalmente se administra como (SATIVECTOR - SINESOTHERVECTOR). El resultado de esta restación es un nuevo vector que lleva a SepanCector como punto de origen. En su caso, el vector relativo del mouse al jugador probablemente nunca cambia, por lo que la resta no parece no necesaria. Sin embargo, es una buena práctica usar la resta de dos vectores como la dirección.

 

Raycasts need a direction, which is usually given as (someVector - someOtherVector). The result from this subtraction is a new vector that takes someVector as the origin point. In your case, the relative vector from the mouse to the player probably never changes, so the subtraction seems not needed. However, it is good practice to use the subtraction of two vectors as direction.

 
 

Relacionados problema

0  Convertir una imagen de mapa de bits en una textura o material  ( Convert a bitmap image into a texture or material ) 
Veo a muchos programadores que desean convertir cosas en mapa de bits, pero no puedo encontrar una solución de santificación al problema opuesto. Estoy usan...

0  El objeto de unidad ya está destruido justo después de la búsqueda  ( Unity object is already destroyed just after the fetch ) 
Estoy teniendo un bucle para buscar un objeto específico de una lista, así que lo almaceno en una variable global. Pero cuando trato de buscarlo, siempre es n...

2  Mi complemento de unidad de C ++ se ejecuta una vez en el editor pero no dos veces  ( My c unity plugin runs once in the editor but not twice ) 
Tengo un complemento que llama código C ++. Cuando se inicia el juego, llama a este extern Función C ++: void startPlugin() { MyClass::instance = new M...

1  Unity 5 no responde después de que se ejecute un pedazo de código  ( Unity 5 unresponsive after a piece of code is executed ) 
Soy un principiante absoluto en la unidad. He estado trabajando en una UI, que es un simple formulario de inicio de sesión. En el que tengo dos var r...

-1  No hay excepción en el método de Async  ( No exception in async method ) 
Parece que no puedo arrojar excepción en los métodos de Async: void Start () { ReadAndThrow(null); } public static async Task ReadAndThrow(string path...

3  El complemento de Webgl vs 3rd Party (Unity3D), la mejor opción en el navegador [cerrado]  ( Webgl vs 3rd party plugin unity3d best option in browser ) 
cerrado . Esta pregunta es basada en opinión . Actualmente no está aceptando respuestas. ¿...

15  Reemplace la instancia de objeto con otro en C #  ( Replace object instance with another in c sharp ) 
En esta pregunta, me gustaría averiguar si es posible y cómo es posible. Esta técnica parece una práctica extremadamente mala, pero parece que la API (Unityed...

1  Los tiempos de carga de la escena de la unidad son extremadamente largos  ( Unity scene loading times are extremly long ) 
Soy bastante nuevo en la unidad, así que no mucha extracción con el IDE. Estoy desarrollando una aplicación bastante básica, un inicio de sesión y un tablero ...

0  Al actualizar la emisión de un sombreado, solo se actualiza cuando hago clic en el editor [Unity]  ( When updating the emission of a shader it only updates when i click in the edit ) 
Así que tengo este sombreador que estoy tratando de hacer parpadeo, por lo que estoy haciendo que el valor de emisión vuelva a adelante entre 0 y 1, pero solo...

1  Unity Facebook SDK en el error de inicio de sesión de Android  ( Unity facebook sdk on android login error ) 
unidad 4.3.0f4 Facebook SDK 4.3.6 y 5.0.3 también He descargado el SDK e importado a un proyecto limpio. He creado una nueva aplicación de Facebook. He...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos