Привет :) Я использую метод Physics2D.Raycast, и согласно документации Unity его входные аргументы определяются следующим образом:
public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance = Mathf.Infinity,
int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);
И я вызвал этот метод и вставил следующие входные аргументы:
RaycastHit2D hit = Physics2D.Raycast (transform.position,
newVelocity, layerMask: hitLayerMask);
Однако я получаю следующее сообщение об ошибке:
The best overloaded method match for 'UnityEngine.Physics2D.Raycast(UnityEngine.Vector2, UnityEngine.Vector2, float)'
does not contain a parameter named layerMask
Не могли бы вы помочь мне решить эту проблему? Я не понимаю, почему компилятор считает, что я перегружаю метод только тремя входными аргументами.
P.S. Я знаю о том, что я ввел «transform.position», объект Vector3, в функцию, которая предположительно принимает объект Vector2. Но я делал это раньше, и у меня не было ошибок. Единственный новый подход, который я использую, — это спецификация аргумента layerMask :/
Буду признателен за любую помощь.
Изменить: Просто чтобы уточнить, transform.position — это объект Vector3, newVelocity — это Vector2, а hitLayerMask — это целое число.
Редактировать 2: обратите внимание, что я пренебрег передачей входного аргумента «расстояние», потому что он имеет значение по умолчанию Mathf.Infinity. На этой веб-странице о необязательных аргументах (https://msdn.microsoft.com/en-us/library/dd264739.aspx), в части ExampleMethod() показано, как можно игнорировать аргументы со значениями по умолчанию. И именно по этой причине я пренебрег аргументом «расстояние».