Я настраиваю игру космических кораблей с другими друзьями с Unity, используя программирование на c #.Наша игра 2D с видением игрока сверху.Нам нужно сделать 2 перекрестия: одно, то есть замена курсора мыши (сделано), а ось космического корабля y следует за курсором мыши, чтобы космический корабль вращался вслед за перекрестием курсора мыши с задержкой.В это время задержки космический корабль не нацелен точно на перекрестие мыши, потому что вращение происходит не сразу, поэтому мы хотим сделать второе перекрестие, которое следует за осью Y космического корабля, чтобы игрок понял, когда вооружения корабля будут нацелены на позицию курсораименно так.Это второе перекрестие должно прокручиваться вдоль оси y корабля, чтобы расстояние между кораблем и курсором мыши было одинаковым между вторичным видоискателем по оси Y.Здесь вы можете найти пример игры: https://imgur.com/Uk7pW4x
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MouseCursor : MonoBehaviour{
public Texture2D cursorTexture;
public Transform aim;
public float aimSpeed = 3.0f;
private Vector2 cursorHotspot;
private Vector2 aim2;
private Vector3 mouseP;
private Vector2 direction;
// initialize mouse with a new texture with the
// hotspot set to the middle of the texture
// (don't forget to set the texture in the inspector
// in the editor)
void Start()
{
cursorHotspot = new Vector2(cursorTexture.width / 2, cursorTexture.height / 2);
Cursor.SetCursor(cursorTexture, cursorHotspot, CursorMode.Auto);
}
// To check where your mouse is really pointing
// track the mouse position in you update function
void Update()
{
//from this the second crosshair code
Vector3 currentMouse = Input.mousePosition;
Ray ray = Camera.main.ScreenPointToRay(currentMouse);
RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);
Debug.DrawLine(ray.origin, hit.point);
var dir = Input.mousePosition - Camera.main.WorldToScreenPoint(transform.position);
aim2 = new Vector2(dir.x , dir.y);
aim.transform.position = Vector2.MoveTowards(transform.position, aim2, aimSpeed);
}
}
На самом деле второе перекрестие остается в оси Y, как это исключено, но он не будет перемещаться так же далеко, как курсор мыши от корабля, так что обаперекрестие не полностью выровняет одно над другим.