I am new to Unity and C# code. I am doing a basic step by step tutorial from Brackeys and for no obvious reason I get this error that says «error CS1503: Argument 1: cannot convert from ‘float’ to ‘UnityEngine.Vector3′». The error appears on both rb.AddForce lines. Does anyone know what’s the problem here? I am using Unity 2020.3.29f1 Personal.
Thanks for your help.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public Rigidbody rb;
public float forwardForce = 2000f;
void FixedUpdate()
{
rb.AddForce(0, 0, forwardForce * Time.deltaTime);
if (Input.GetKey("d") )
{
rb.AddForce(500 * Time.deltaTime);
}
if (Input.GetKey("a") )
{
rb.AddForce(-500 * Time.deltaTime);
}
}
}
derHugo
83.7k9 gold badges77 silver badges115 bronze badges
asked Mar 1, 2022 at 3:44
4
There are different overloads of AddForce
.
AddForce(Vector3 [, ForceMode])
and
AddForce(float, float, float [, ForceMode])
where the ForceMode
is optional for both.
You are passing in only one single parameter float
so the compiler thinks you want to use the first overload and tries in vain to convert the given float
into a Vector3
and obviously doesn’t find any implemented way to do such thing.
You probably rather want
rb.AddForce(Vector3.right * 500 * Time.deltaTime);
or
rb.AddForce(500 * Time.deltaTime, 0, 0);
answered Mar 1, 2022 at 6:13
derHugoderHugo
83.7k9 gold badges77 silver badges115 bronze badges
<pre>using UnityEngine; using System.Collections; public class Movimento : MonoBehaviour { public Animator Animacao; // Use this for initialization void Start () { } // Update is called once per frame void Update () { Animacao = gameObject.GetComponent<Animator> (); if (Input.GetAxisRaw ("A") == 1) { Animacao.SetBool ("Andar(a)", true); gameObject.transform.Translate(new Vector2(-0.1, 0f)); } if (Input.GetAxisRaw ("A") == 0) { Animacao.SetBool ("Andar(a)", false); } } }
Hi, can you help me with my error? Its in Unity, and the app to i program its VisualStudio (VS Code).
The full error is: Assets\Movimento.cs(18,57): error CS1503: Argument 1: cannot convert from ‘double’ to ‘float’
Help-me pls!!!
What I have tried:
I searched for videos on youtube and searched on google but none helped me, I also tried to change the code but it was not
using System;
using UnityEngine;
using UnityEngine.InputSystem;
namespace platformer
{
public class HeroInput : MonoBehaviour
{
[SerializeField] private Hero _hero;
private HeroInputAction _inputActions;
private void Awake()
{
_inputActions = new HeroInputAction();
_inputActions.Hero.HorizontalMovement.performed += OnHorizontalMovement;
_inputActions.Hero.HorizontalMovement.canceled += OnHorizontalMovement;
_inputActions.Hero.SaySomething.performed += OnSaySomething;
}
private void OnEnable()
{
_inputActions.Enable();
}
private void OnHorizontalMovement(InputAction.CallbackContext context )
{
var direction = context.ReadValue<float>();
_hero.SetDirection(direction);
}
private void OnSaySomething(InputAction.CallbackContext context)
{
_hero.SaySomething();
}
}
}
Проблемка со скриптом. |
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
qaa-engineer.ru > Вопросы и ответы > error CS1503: Argument 1 : cannot convert from ‘method group’ to ‘strint’ помогите пж юнити
Error CS1503 является типичной проблемой, с которой сталкиваются многие разработчики в Unity. В данной статье мы подробно рассмотрим данную ошибку и предоставим вам решение.
Ошибка CS1503 возникает, когда пытаетесь присвоить переменной типа string значение, которое является группой методов (method group). Эта ошибка указывает на несоответствие типов данных и может возникнуть, когда вы пытаетесь передать метод со своими аргументами вместо строки.
Для начала разберемся, что такое method group.
Method group представляет собой набор методов с одинаковым именем, но разными аргументами, которые могут быть вызваны. В C# вы можете вызывать метод в виде делегата, указывая только имя метода без аргументов. В этом случае компилятор будет искать метод с соответствующим именем и аргументами, и выполнит его.
Однако, если вы пытаетесь присвоить метод группе переменных типа string, которая предназначена только для строк, возникает ошибка CS1503.
Рассмотрим пример кода, который может вызвать данную ошибку:
public class MyClass { public void MyMethod(string arg) { Console.WriteLine(arg); } } public class AnotherClass { public static void Main(string[] args) { MyClass myObj = new MyClass(); string myString = myObj.MyMethod; //Ошибка CS1503 } }
Здесь мы имеем класс `MyClass`, который содержит метод `MyMethod`, принимающий аргумент типа string и выводящий его на консоль.
В классе `AnotherClass` создаем экземпляр класса `MyClass` и пытаемся присвоить значение метода `MyMethod` переменной `myString`. Компилятор сообщает об ошибке CS1503, так как метод `MyMethod` является методом, а не строкой.
Чтобы исправить эту ошибку, вам нужно вызвать метод `MyMethod` и присвоить его результат переменной `myString`. Для этого воспользуемся делегатами:
public delegate void MyDelegate(string arg); public class MyClass { public void MyMethod(string arg) { Console.WriteLine(arg); } } public class AnotherClass { public static void Main(string[] args) { MyClass myObj = new MyClass(); MyDelegate myDelegate = new MyDelegate(myObj.MyMethod); //Создаем делегат myDelegate("Hello, world!"); //Вызываем делегат string myString = myDelegate("Hello, universe!"); //Присваиваем результат делегата переменной } }
В данном примере мы создаем делегат `MyDelegate`, который принимает аргумент типа string. Затем мы создаем экземпляр класса `MyClass` и инициализируем делегат `myDelegate` с помощью метода `MyMethod`.
Далее мы вызываем `myDelegate` с аргументом «Hello, world!» и присваиваем результат переменной `myString`. Теперь переменная `myString` содержит значение, возвращенное методом `MyMethod`.
Таким образом, мы решаем проблему ошибки CS1503, приводя метод к делегату и вызывая его для получения значения.
В заключение, ошибка CS1503: «Argument 1 : cannot convert from ‘method group’ to ‘string'» в Unity возникает, когда пытаетесь присвоить переменной типа string значение, которое является группой методов. Одним из способов решения данной ошибки является создание делегата и инициализация его методом. Надеемся, что данная статья помогла вам разобраться в проблеме и найти решение для вашего проекта в Unity.