Problem in a Player Script PlayerMoviment on Unity 5

1

Problem in a Script PlayerMoviment of Char in Unity 5 Supposed problem on line 70 in "Quaternion"

using UnityEngine;
using System.Collections;

public class PlayerMoviment : MonoBehaviour 
{
	//velocidade do Mago
	public float speed = 6f;

	//Vetor responsavel pelo movimento do Mago
	Vector3 movement;

	//Responsavel pela transiçao da animaçao
	Animator anim;

	//Responsavel pela fisica do objeto
	Rigidbody playerRigidbody;

	//Mascara de chao
	int floorMask;

	//Informaçoes para magia
	float camRayLenght = 100f;

	void Awake()
	{	//Atribuir mascara de camada
		floorMask = LayerMask.GetMask ("Floor"); 

		//Atribuir as referencias
		anim = GetComponent <Animator> ();
		playerRigidbody = GetComponent <Rigidbody> ();

	}



	void FixedUpdate()
	{
		float h = Input.GetAxisRaw ("Horizontal");
		float v = Input.GetAxisRaw ("Vertical");

		Move (h, v);
		Turning ();
		Animating (h, v);
	}



	//movimento do Mago
	void Move (float h, float v)
	{	//Determina o movimento
		movement.Set (h, 0f, v);
		//normaliza o movimento
		movement = movement.normalized * speed * Time.deltaTime;
		//Efetua o movimento do Mago
		playerRigidbody.MovePosition (transform.position + movement);

	}
	//Movimento Giratorio do Mago
	void Turning ()
	{
		Ray camRay = Camera.main.ScreenPointToRay (Input.mousePosition);

		RaycastHit floorHit;

		if (Physics.Raycast (camRay, out floorHit, camRayLenght, floorMask)) 
		{
			Vector3 playerToMouse = floorHit.point - transform.position;
			playerToMouse.y = 0f;

			Quaternion newRotation = Quaternion.LookRotation(playerToMouse);
			playerRigidbody.MovePosition(newRotation);
		
		}		


	}

	void Animating(float h, float v)
	{
		bool walking = h != 0f || v != 0f;

		anim.SetBool ("IsWalking", walking);	
	}

}

    
asked by anonymous 28.06.2015 / 17:08

1 answer

3

The cause of the error is simple and straightforward: the method MovePosition expects a Vector3 and not Quaternion . As you are passing%% as a parameter on the line ...

playerRigidbody.MovePosition(newRotation);

... the tool generates the error to indicate the invalid parameter.

The question then is: what did you want to do? If you wanted to target the transformation (make the object "stick" / "look" at the direction of the mouse), just do as in the documentation example , and change this line to:

transform.rotation = newRotation;
    
29.06.2015 / 15:44