Unity помощь в скрипте

128
18 июня 2019, 11:30

Что я пишу не так? По идее, этот скрипт должен двигать прицел по кругу, вокруг персонажа и следовать за указателем мыши, но прицел крутится только на одной половине экрана.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Crosshair : MonoBehaviour {
public GameObject CrossHair;
//public float zDistance = 10f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
    MoveCrossHair();
}
private void MoveCrossHair(){
    var mousePos = Input.mousePosition;
    Vector3 aim = new Vector3(mousePos.x, mousePos.y, mousePos.z);
    if (aim.magnitude > 0.0f){
        aim.Normalize();
        aim *= 2f;
        CrossHair.transform.position = aim;
    }
}
}
Answer 1

Input.mousePosition - возвращает вам положение курсора в экранных координатах, где левый нижний угол (0,0), а правый (ширина, высота) разрешения.

При этом, видимо, ваш персонаж стоит в мировых координатах (0,0) поэтому и получается, что прицел всегда справа от него. В вашем случае я бы предложил использовать вот такой код:

[SerializeField]
GameObject CrossHair;
[SerializeField]
float _distance;
void Update()
{
    Move();
}
void Move()
{
    var mousePos = Input.mousePosition; //получаем экранные координаты
    var worldCursor = Camera.main.ScreenToWorldPoint(mousePos); //превращаем в мировые
    var aim = new Vector3(worldCursor.x, worldCursor.y, transform.position.z); //устанавливаем z равный z нашего персонажа
    if (worldCursor.magnitude > 0)
    {
        var newPos = Vector3.MoveTowards(transform.position, aim, _distance); //Сдвигаем точку от положения персонажа, в сторону цели не дальше, чем на _distance
        CrossHair.transform.position = newPos; 
    }
}
READ ALSO
Как отобразить данные List<BsonDocument> в DataGrid?

Как отобразить данные List<BsonDocument> в DataGrid?

У меня на wpf-форме есть элемент DataGrid

130
Форматирование телефонных номеров C#

Форматирование телефонных номеров C#

Требуется отформатировать строки, содержащие телефонные номера, так, чтобы их можно было потом сравнитьК примеру:

120
Помогите с WPF, Binding

Помогите с WPF, Binding

У меня есть несколько Image и Button, они динамически (через код) добавляются в WrapPanel или в StackPanel, я хочу связать в коде: Source Картинки и Content Кнопки,...

150
Можно ли сделать выборку по нескольким элементам сразу в коллекцию?

Можно ли сделать выборку по нескольким элементам сразу в коллекцию?

На данный момент у меня есть вот такой код выборки данных:

106