- Home /
error CS1729
Hi, my script won't work the error, 'error CS1729: The type UnityEngine.Vector2' does not contain a constructor that takes
3' arguments' pops up. all i want to do is make my player spawn and move. Here's the script:
using UnityEngine; using System.Collections;
public class Player : MonoBehaviour {
public float playerSpeed = 5.0f;
// Use this for initialization
void Start () {
//Player spawn point
//This is where the player will start when the game is payed.
//Player = Game Object. Game Object = Transform
transform.position = new Vector2(-2.5,-0.32,0);
}
// Update is called once per frame
void Update () {
//player to move up/left/right/down
//player (gameobject) aka transform to move when i press the arrow keys
transform.Translate (Vector2.right * Input.GetAxis ("Horizontal") * playerSpeed * Time.deltaTime);
transform.Translate (Vector2.up * Input.GetAxis ("Vertical") * playerSpeed * Time.deltaTime);
}
}
Thank you
This line
transform.position = new Vector2(-2.5,-0.32,0);
if it's Vector2, it will only takes 2 value. The last value (0) shouldn't be there.
Thank you for all of your responses, my game was a top-down, third-person game such as Corpse Party. When I changed my values in the animator, i used this final script:
using UnityEngine; using System.Collections;
public class Player$$anonymous$$ovement : $$anonymous$$onoBehaviour { public float speed;
private Animator _animator;
private Rigidbody2D _rigidbody2D;
void Start ()
{
_animator = GetComponent <Animator> ();
_rigidbody2D = GetComponent <Rigidbody2D> ();
}
void Update ()
{
CheckDirection ();
}
void CheckDirection ()
{
if (Input.Get$$anonymous$$ey ($$anonymous$$eyCode.A))
{
WalkAnimation (-1, 0, true);
}
else if (Input.Get$$anonymous$$ey ($$anonymous$$eyCode.D))
{
WalkAnimation (1, 0, true);
}
else if (Input.Get$$anonymous$$ey ($$anonymous$$eyCode.W))
{
WalkAnimation (0, 1, true);
}
else if (Input.Get$$anonymous$$ey ($$anonymous$$eyCode.S))
{
WalkAnimation (0, -1, true);
}
else
{
_animator.SetBool ("Walking", false);
}
}
void FixedUpdate ()
{
$$anonymous$$ove ();
}
void $$anonymous$$ove ()
{
float dirX = _animator.GetFloat ("VelX");
float dirY = _animator.GetFloat ("VelY");
bool walking = _animator.GetBool ("Walking");
if (walking)
{
_rigidbody2D.velocity = new Vector2 (dirX, dirY) * speed;
}
else
{
_rigidbody2D.velocity =Vector2.zero;
}
}
void WalkAnimation (float x, float y, bool walking)
{
_animator.SetFloat ("VelX", x);
_animator.SetFloat ("VelY", y);
_animator.SetBool ("Walking", walking);
}
}
P.S it's a 2D game.
Answer by ramp · Jan 21, 2015 at 11:41 AM
Hello,
Replace the code line 10,and use Vector3 instead of Vector2,like this.
transform.position = new Vector3(-2.5f,-0.32f,0f);
Thanks
Ram
Your answer
![](https://koobas.hobune.stream/wayback/20220613181004im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
What's Wrong With This Script? 1 Answer
Object reference not set to an instance of an object. 0 Answers
Script is causing crashes and i Don't know what to do. 2 Answers
NullReferenceException 0 Answers