ПРИМЕЧАНИЕ, ДОБАВЛЕННОЕ ПОСЛЕ КОММЕНТАРИЙ К ВОПРОСУ
В коде, который вы опубликовали, вы делаете целочисленное деление, которое отправляет в качестве результата int (см. Также этот ответ ).
Из того, что я прочитал в комментариях.
target.x
, target.y
, speedx
и speedz
(а также константа 4) являются целыми числами.
См. Также этот пример:
int x = 13 / 4; //this returns int 3
Так что вам не нужно там кастовать.
Ответ на вопрос с плавающей точкой для Vector3Int
Float не конвертируется в int неявно, поэтому ваш код не будет компилироваться. Для конвертации вам нужен каст.
Учтите также, что преобразование усекает число с плавающей запятой.
float x = 124.345f;
int y = (int) x; //x will become 124.
В вашем конкретном случае вы можете конвертировать его следующим образом.
m_target = new Vector3Int((int) target.x-speedx/4, (int)target.y, (int)target.z-speedz/4);
И результат будет (124,0, 0,0, 0,0).
Если вы хотите достичь других результатов, вы можете проверить эти методы.
FLOAT TO INT CONVERSIONS
Mathf.Floor и Math.FloorToInt
Конечный результат будет таким же, как базовый состав. Поплавок будет усечен до нижнего целого.
float x 124.345;
int y = (int) Mathf.Floor(x); //y will become 124
//or
int z = Mathf.FloorToInt(x); //z will become 124
РЕЗУЛЬТАТЫ КОНВЕРСИИ
float 124.345f
& rightarrow; преобразует в int 124
float 124.789f
& rightarrow; преобразует в int 124
Mathf.Ceil и Mathf.CeilToInt
Число с плавающей точкой будет усечено до более высокого значения.
float x 124.345;
int y = (int) Mathf.Ceil(x); //y will become 125
//or
int z = Mathf.CeilToInt(x); //z will become 125
РЕЗУЛЬТАТЫ КОНВЕРСИИ
float 124.345f
& rightarrow; преобразует в int 125
float 124.789f
& rightarrow; преобразует в int 125
Mathf.Round и Mathf.RoundToInt
Поплавок будет округлен до ближайшего целого.
float x 124.345;
int y = (int) Mathf.Round(x); //y will become 124
//or
int z = Mathf.RoundToInt(x); //z will become 124
РАЗНЫЕ РЕЗУЛЬТАТЫ КОНВЕРСИИ
float 124.345f
& rightarrow; преобразует в int 124
float 124.789f
& rightarrow; преобразует в int 125