Mail.ruПочта0Мой Мир0ОдноклассникиВКонтактеИгры0ЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка "CS1501" в UNITY c#

Fiery Flame Ученик (71), на голосовании 2 дня назад
Ошибка: error cs1501: no overload for method "SetFloat" takes 1 arguments.

Вот код:

using UnityEngine;
using UnityEngine.InputSystem;

public class Player : MonoBehaviour
{
[SerializeField]
private float speed = 3f;
private Rigidbody2D rb;
[SerializeField]
private Animator animator;
private Vector2 move;

void Start()
{
rb = GetComponent<Rigidbody2D>();
}

void Update()
{
rb.linearVelocity = move * speed;
}

public void Move(InputAction.CallbackContext context)
{
animator.SetBool("isMoving", true);

if (context.canceled)
{
animator.SetBool("isMoving", false);
animator.SetFloat("lastX, move.x");
animator.SetFloat("lastY, move.y");
}

move = context.ReadValue<Vector2>();
animator.SetFloat("inputX, move.x");
animator.SetFloat("inputY, move.y");
}
}
Голосование за лучший ответ
Агент Габен Знаток (437) 1 месяц назад
???
Fiery FlameУченик (71) 1 месяц назад
0_0
Агент Габен Знаток (437) Fiery Flame, ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
PS Просветленный (23653) 1 месяц назад
Скармливать методу SetFloat ОДНУ строку типа lastX, move.x и ждать, что он сам догадается? АХАХА НЕТ. Компилятор в шоке, видит ОДИН аргумент вместо ДВУХ. Ему нужно имя параметра СТРОКОЙ и значение ФЛОАТОМ. Отдельно.
S.H.I. Оракул (74160) 1 месяц назад
 using UnityEngine;  
using UnityEngine.InputSystem;

public class Player : MonoBehaviour
{
[SerializeField]
private float speed = 3f;

private Rigidbody2D rb;

[SerializeField]
private Animator animator;

private Vector2 move;

void Start()
{
rb = GetComponent<Rigidbody2D>();
}

void Update()
{
rb.linearVelocity = move * speed;
}

public void Move(InputAction.CallbackContext context)
{
animator.SetBool("isMoving", true);

if (context.canceled)
{
animator.SetBool("isMoving", false);
animator.SetFloat("lastX", move.x);
animator.SetFloat("lastY", move.y);
}

// Сначала читаем новое значение движения
move = context.ReadValue<Vector2>();

// Потом уже отправляем его в аниматор
animator.SetFloat("inputX", move.x);
animator.SetFloat("inputY", move.y);
}
}
Fiery FlameУченик (71) 1 месяц назад
Огромное спасибо, помогло!
Похожие вопросы