Erro no meu script de Dash
2 participantes
Página 1 de 1
Erro no meu script de Dash
Olá esta me a dar este erro no meu script alguém poderia me ajudar
"Assets\Scripts\PlayerDash.cs(33,24): error CS1061: 'PlayerController' does not contain a definition for 'controller' and no accessible extension method 'controller' accepting a first argument of type 'PlayerController' could be found (are you missing a using directive or an assembly reference?)"
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerDash : MonoBehaviour
{
PlayerController moveScript;
public float dashSpeed;
public float dashTime;
// Start is called before the first frame update
void Start()
{
moveScript = GetComponent<PlayerController>();
}
// Update is called once per frame
void Update()
{
if(Input.GetMouseButton(0))
{
StartCoroutine(Dash());
}
}
IEnumerator Dash()
{
float startTime = Time.time;
while(Time.time < startTime + dashTime)
{
moveScript.controller.Move(moveScript.moveDir * dashSpeed * Time.deltaTime);
yield return null;
}
}
}
"Assets\Scripts\PlayerDash.cs(33,24): error CS1061: 'PlayerController' does not contain a definition for 'controller' and no accessible extension method 'controller' accepting a first argument of type 'PlayerController' could be found (are you missing a using directive or an assembly reference?)"
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerDash : MonoBehaviour
{
PlayerController moveScript;
public float dashSpeed;
public float dashTime;
// Start is called before the first frame update
void Start()
{
moveScript = GetComponent<PlayerController>();
}
// Update is called once per frame
void Update()
{
if(Input.GetMouseButton(0))
{
StartCoroutine(Dash());
}
}
IEnumerator Dash()
{
float startTime = Time.time;
while(Time.time < startTime + dashTime)
{
moveScript.controller.Move(moveScript.moveDir * dashSpeed * Time.deltaTime);
yield return null;
}
}
}
Re: Erro no meu script de Dash
PedroMPT escreveu:Olá esta me a dar este erro no meu script alguém poderia me ajudar
"Assets\Scripts\PlayerDash.cs(33,24): error CS1061: 'PlayerController' does not contain a definition for 'controller' and no accessible extension method 'controller' accepting a first argument of type 'PlayerController' could be found (are you missing a using directive or an assembly reference?)"
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerDash : MonoBehaviour
{
PlayerController moveScript;
public float dashSpeed;
public float dashTime;
// Start is called before the first frame update
void Start()
{
moveScript = GetComponent<PlayerController>();
}
// Update is called once per frame
void Update()
{
if(Input.GetMouseButton(0))
{
StartCoroutine(Dash());
}
}
IEnumerator Dash()
{
float startTime = Time.time;
while(Time.time < startTime + dashTime)
{
moveScript.controller.Move(moveScript.moveDir * dashSpeed * Time.deltaTime);
yield return null;
}
}
}
Re: Erro no meu script de Dash
SauloeArthur escreveu:Como está o seu script PlayerController ?
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
public class PlayerController : MonoBehaviour
{
#region Private Members
private Animator _animator;
private CharacterController _characterController;
private float Gravity = 20.0f;
private Vector3 _moveDirection = Vector3.zero;
#endregion
#region Public Members
public float Speed = 5.0f;
public float RotationSpeed = 240.0f;
public float JumpSpeed = 7.0f;
#endregion
public Vector3 moveDir;
// Use this for initialization
void Start()
{
_animator = GetComponent<Animator>();
_characterController = GetComponent<CharacterController>();
}
private bool mIsControlEnabled = true;
public void EnableControl()
{
mIsControlEnabled = true;
}
public void DisableControl()
{
mIsControlEnabled = false;
}
private Vector3 mExternalMovement = Vector3.zero;
public Vector3 ExternalMovement
{
set
{
mExternalMovement = value;
}
}
void LateUpdate()
{
if (mExternalMovement != Vector3.zero)
{
_characterController.Move(mExternalMovement);
}
}
// Update is called once per frame
void Update()
{
{
// Get Input for axis
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
// Calculate the forward vector
Vector3 camForward_Dir = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized;
Vector3 move = v * camForward_Dir + h * Camera.main.transform.right;
if (move.magnitude > 1f) move.Normalize();
// Calculate the rotation for the player
move = transform.InverseTransformDirection(move);
// Get Euler angles
float turnAmount = Mathf.Atan2(move.x, move.z);
transform.Rotate(0, turnAmount * RotationSpeed * Time.deltaTime, 0);
if (_characterController.isGrounded || mExternalMovement != Vector3.zero)
{
_moveDirection = transform.forward * move.magnitude;
_moveDirection *= Speed;
if (Input.GetButton("Jump"))
{
_animator.SetBool("is_in_air", true);
_moveDirection.y = JumpSpeed;
}
else
{
_animator.SetBool("is_in_air", false);
_animator.SetBool("run", move.magnitude > 0);
}
}
else
{
Gravity = 20.0f;
}
_moveDirection.y -= Gravity * Time.deltaTime;
_characterController.Move(_moveDirection * Time.deltaTime);
}
}
}
Re: Erro no meu script de Dash
Eu procurei no seu script PlayerController e não achei nenhuma variavel chamada "controller" por isso o compilador está dizendo que moveScript não contém uma definição para 'controller' a variável com o nome mais parecido é a _characterController
Re: Erro no meu script de Dash
Ah okSauloeArthur escreveu:Eu procurei no seu script PlayerController e não achei nenhuma variavel chamada "controller" por isso o compilador está dizendo que moveScript não contém uma definição para 'controller' a variável com o nome mais parecido é a _characterController
Re: Erro no meu script de Dash
eu consegui resolver o erro mudando o meu script para um que tinha antes, mas agora o PlayerDash não está a econtrar o scriptSauloeArthur escreveu:Eu procurei no seu script PlayerController e não achei nenhuma variavel chamada "controller" por isso o compilador está dizendo que moveScript não contém uma definição para 'controller' a variável com o nome mais parecido é a _characterController
Assets\PlayerDash.cs(7,9): error CS0246: The type or namespace name 'PlayerLocomotion' could not be found (are you missing a using directive or an assembly reference?)
Script de Dash
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerDash : MonoBehaviour
{
PlayerLocomotion moveScript;
public float dashSpeed;
public float dashTime;
// Start is called before the first frame update
void Start()
{
moveScript = GetComponent<PlayerLocomotion>();
}
// Update is called once per frame
void Update()
{
if(Input.GetMouseButton(0))
{
StartCoroutine(Dash());
}
}
IEnumerator Dash()
{
float startTime = Time.time;
while(Time.time < startTime + dashTime)
{
moveScript.controller.Move(moveScript.moveDir * dashSpeed * Time.deltaTime);
yield return null;
}
}
}
Script novo de Movimento
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace SG
{
public class PlayerLocomotion : MonoBehaviour
{
Transform cameraObject;
InputHandler inputHandler;
Vector3 movDirection;
[HideInInspector]
public Transform myTransform;
[HideInInspector]
public AnimatorHandler animatorHandler;
public new Rigidbody rigidbody;
public GameObject normalCamera;
[Header("Stats")]
[SerializeField]
float movementSpeed = 5;
[SerializeField]
float rotationSpeed = 10;
//Dash & Movement
public Vector3 moveDir;
void Start() {
rigidbody = GetComponent<Rigidbody>();
inputHandler = GetComponent<InputHandler>();
animatorHandler = GetComponentInChildren<AnimatorHandler>();
cameraObject = Camera.main.transform;
myTransform = transform;
animatorHandler.Initialize();
controller = GetComponent<CharacterController>();
Cursor.lockState = CursorLockMode.Locked;
}
public void Update()
{
float delta = Time.deltaTime;
inputHandler.TickInput(delta);
HandleMovement(delta);
Vector3 dir = new Vector3(h, 0, v).normalized;
if (dir.magnitude >= 0.1f)
{
float targetAngle = Mathf.Atan2(dir.x, dir.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);
transform.rotation = Quaternion.Euler(0f, angle, 0f);
moveDir = Quaternion.Euler(0, targetAngle, 0) * Vector3.forward;
controller.Move(moveDir.normalized * speed * Time.deltaTime);
}
}
#region Movimento
Vector3 normalVector;
Vector3 targetPosition;
private void HandleRotation(float delta)
{
Vector3 tragetDir = Vector3.zero;
float moveOverride = inputHandler.moveAmount;
tragetDir = cameraObject.forward * inputHandler.vertical;
tragetDir += cameraObject.right * inputHandler.horizontal;
tragetDir.Normalize();
tragetDir.y = 0;
if(tragetDir == Vector3.zero)
tragetDir = myTransform.forward;
float rs = rotationSpeed;
Quaternion tr = Quaternion.LookRotation(tragetDir);
Quaternion targetRotation = Quaternion.Slerp(myTransform.rotation, tr, rs * delta);
myTransform.rotation = targetRotation;
}
public void HandleMovement(float delta)
{
movDirection = cameraObject.forward * inputHandler.vertical;
movDirection += cameraObject.right * inputHandler.horizontal;
movDirection.Normalize();
movDirection.y = 0;
float speed = movementSpeed;
movDirection *= speed;
Vector3 projectedVelocity = Vector3.ProjectOnPlane(movDirection, normalVector);
rigidbody.velocity = projectedVelocity;
animatorHandler.UpdateAnimatorValues(inputHandler.moveAmount, 0);
if (animatorHandler.canRotate)
{
HandleRotation(delta);
}
}
#endregion
}
}
Re: Erro no meu script de Dash
Isto está acontecendo pq vc colocou a classe dentro de uma namespace então para poder acessar no outro script vc teria que colocar fora da classe um "using SG;"
Exemplo:
Exemplo:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SG;
public class PlayerDash : MonoBehaviour{}
Re: Erro no meu script de Dash
Obrigado o erro foi corrigido o problema é que apareceram nove outros errosSauloeArthur escreveu:Isto está acontecendo pq vc colocou a classe dentro de uma namespace então para poder acessar no outro script vc teria que colocar fora da classe um "using SG;"
Exemplo:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SG;
public class PlayerDash : MonoBehaviour{}
Assets\Scripts\PlayerLocomotion.cs(40,13): error CS0103: The name 'controller' does not exist in the current context
Assets\Scripts\PlayerDash.cs(34,24): error CS1061: 'PlayerLocomotion' does not contain a definition for 'controller' and no accessible extension method 'controller' accepting a first argument of type 'PlayerLocomotion' could be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\PlayerLocomotion.cs(52,39): error CS0103: The name 'h' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(52,45): error CS0103: The name 'v' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(56,77): error CS0103: The name 'cam' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(57,91): error CS0103: The name 'turnSmoothVelocity' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(57,111): error CS0103: The name 'turnSmoothTime' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(61,13): error CS0103: The name 'controller' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(61,50): error CS0103: The name 'speed' does not exist in the current context
se quiseres ajudar agradecia, mas na mesma eu vou tentar
Re: Erro no meu script de Dash
eu vi de tudo tentei muitas coisas e não consegui resolver.PedroMPT escreveu:Obrigado o erro foi corrigido o problema é que apareceram nove outros errosSauloeArthur escreveu:Isto está acontecendo pq vc colocou a classe dentro de uma namespace então para poder acessar no outro script vc teria que colocar fora da classe um "using SG;"
Exemplo:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SG;
public class PlayerDash : MonoBehaviour{}
Assets\Scripts\PlayerLocomotion.cs(40,13): error CS0103: The name 'controller' does not exist in the current context
Assets\Scripts\PlayerDash.cs(34,24): error CS1061: 'PlayerLocomotion' does not contain a definition for 'controller' and no accessible extension method 'controller' accepting a first argument of type 'PlayerLocomotion' could be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\PlayerLocomotion.cs(52,39): error CS0103: The name 'h' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(52,45): error CS0103: The name 'v' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(56,77): error CS0103: The name 'cam' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(57,91): error CS0103: The name 'turnSmoothVelocity' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(57,111): error CS0103: The name 'turnSmoothTime' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(61,13): error CS0103: The name 'controller' does not exist in the current context
Assets\Scripts\PlayerLocomotion.cs(61,50): error CS0103: The name 'speed' does not exist in the current context
se quiseres ajudar agradecia, mas na mesma eu vou tentar
Re: Erro no meu script de Dash
É pq muitos desses não foram declarados como variaveis exemplo:
- Código:
void Start ()
{
cam = GetComponent<Camera>();
}
- Código:
public Camera cam;//aqui a variavel que não tinha sido declarada antes
void Start ()
{
cam = GetComponent<Camera>();
}
Re: Erro no meu script de Dash
Ah ok, obrigado pela ajudaSauloeArthur escreveu:É pq muitos desses não foram declarados como variaveis exemplo:deste jeito não funcionaria pois "cam" nao foi declarado como variavel
- Código:
void Start ()
{
cam = GetComponent<Camera>();
}Se observar mais um pouco se percebe que esses nomes entre as aspas nao foram declarados como variaveis la no topo exemplo: 'the name v does not exist' isto acontece pq vc não criou uma variável chamada v (public float, int, Vector3... v) e por isso a unity não consegue reconhecer aquele tipo ou namespace
- Código:
public Camera cam;//aqui a variavel que não tinha sido declarada antes
void Start ()
{
cam = GetComponent<Camera>();
}
Re: Erro no meu script de Dash
só não estou a conseguir resolver o de controller e a camaraPedroMPT escreveu:Ah ok, obrigado pela ajudaSauloeArthur escreveu:É pq muitos desses não foram declarados como variaveis exemplo:deste jeito não funcionaria pois "cam" nao foi declarado como variavel
- Código:
void Start ()
{
cam = GetComponent<Camera>();
}Se observar mais um pouco se percebe que esses nomes entre as aspas nao foram declarados como variaveis la no topo exemplo: 'the name v does not exist' isto acontece pq vc não criou uma variável chamada v (public float, int, Vector3... v) e por isso a unity não consegue reconhecer aquele tipo ou namespace
- Código:
public Camera cam;//aqui a variavel que não tinha sido declarada antes
void Start ()
{
cam = GetComponent<Camera>();
}
Assets\Scripts\PlayerLocomotion.cs(66,81): error CS1061: 'Camera' does not contain a definition for 'eulerAngles' and no accessible extension method 'eulerAngles' accepting a first argument of type 'Camera' could be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\PlayerLocomotion.cs(71,24): error CS1061: 'bool' does not contain a definition for 'Move' and no accessible extension method 'Move' accepting a first argument of type 'bool' could be found (are you missing a using directive or an assembly reference?)
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace SG
{
public class PlayerLocomotion : MonoBehaviour
{
Transform cameraObject;
InputHandler inputHandler;
Vector3 movDirection;
public float v;
public float h;
public float speed;
public float turnSmoothVelocity;
public bool controller;
public float turnSmoothTime;
public Camera cam;
[HideInInspector]
public Transform myTransform;
[HideInInspector]
public AnimatorHandler animatorHandler;
public new Rigidbody rigidbody;
public GameObject normalCamera;
[Header("Stats")]
[SerializeField]
float movementSpeed = 5;
[SerializeField]
float rotationSpeed = 10;
//Dash & Movement
public Vector3 moveDir;
void Start() {
rigidbody = GetComponent<Rigidbody>();
inputHandler = GetComponent<InputHandler>();
animatorHandler = GetComponentInChildren<AnimatorHandler>();
cameraObject = Camera.main.transform;
myTransform = transform;
cam = GetComponent<Camera>();
animatorHandler.Initialize();
controller = GetComponent<CharacterController>();
Cursor.lockState = CursorLockMode.Locked;
}
public void Update()
{
float delta = Time.deltaTime;
inputHandler.TickInput(delta);
HandleMovement(delta);
HandleRollingAndSprinting(delta);
Vector3 dir = new Vector3(h, 0, v).normalized;
if (dir.magnitude >= 0.1f)
{
float targetAngle = Mathf.Atan2(dir.x, dir.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);
transform.rotation = Quaternion.Euler(0f, angle, 0f);
moveDir = Quaternion.Euler(0, targetAngle, 0) * Vector3.forward;
controller.Move(moveDir.normalized * speed * Time.deltaTime);
}
}
#region Movimento
Vector3 normalVector;
Vector3 targetPosition;
private void HandleRotation(float delta)
{
Vector3 tragetDir = Vector3.zero;
float moveOverride = inputHandler.moveAmount;
tragetDir = cameraObject.forward * inputHandler.vertical;
tragetDir += cameraObject.right * inputHandler.horizontal;
tragetDir.Normalize();
tragetDir.y = 0;
if(tragetDir == Vector3.zero)
tragetDir = myTransform.forward;
float rs = rotationSpeed;
Quaternion tr = Quaternion.LookRotation(tragetDir);
Quaternion targetRotation = Quaternion.Slerp(myTransform.rotation, tr, rs * delta);
myTransform.rotation = targetRotation;
}
public void HandleMovement(float delta)
{
movDirection = cameraObject.forward * inputHandler.vertical;
movDirection += cameraObject.right * inputHandler.horizontal;
movDirection.Normalize();
movDirection.y = 0;
float speed = movementSpeed;
movDirection *= speed;
Vector3 projectedVelocity = Vector3.ProjectOnPlane(movDirection, normalVector);
rigidbody.velocity = projectedVelocity;
animatorHandler.UpdateAnimatorValues(inputHandler.moveAmount, 0);
if (animatorHandler.canRotate)
{
HandleRotation(delta);
}
}
public void HandleRollingAndSprinting(float delta)
{
if(animatorHandler.anim.GetBool("isInteracting"))
return;
if(inputHandler.rollFlag)
{
movDirection = cameraObject.forward * inputHandler.vertical;
movDirection += cameraObject.right * inputHandler.horizontal;
if(inputHandler.moveAmount > 0)
{
animatorHandler.PlayTargertAnimation("Rolling", true);
movDirection.y = 0;
Quaternion rollRotation = Quaternion.LookRotation(movDirection);
myTransform.rotation = rollRotation;
}
}
}
#endregion
}
}
Re: Erro no meu script de Dash
Alguém pode ajudar.PedroMPT escreveu:só não estou a conseguir resolver o de controller e a camaraPedroMPT escreveu:Ah ok, obrigado pela ajudaSauloeArthur escreveu:É pq muitos desses não foram declarados como variaveis exemplo:deste jeito não funcionaria pois "cam" nao foi declarado como variavel
- Código:
void Start ()
{
cam = GetComponent<Camera>();
}Se observar mais um pouco se percebe que esses nomes entre as aspas nao foram declarados como variaveis la no topo exemplo: 'the name v does not exist' isto acontece pq vc não criou uma variável chamada v (public float, int, Vector3... v) e por isso a unity não consegue reconhecer aquele tipo ou namespace
- Código:
public Camera cam;//aqui a variavel que não tinha sido declarada antes
void Start ()
{
cam = GetComponent<Camera>();
}
Assets\Scripts\PlayerLocomotion.cs(66,81): error CS1061: 'Camera' does not contain a definition for 'eulerAngles' and no accessible extension method 'eulerAngles' accepting a first argument of type 'Camera' could be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\PlayerLocomotion.cs(71,24): error CS1061: 'bool' does not contain a definition for 'Move' and no accessible extension method 'Move' accepting a first argument of type 'bool' could be found (are you missing a using directive or an assembly reference?)
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace SG
{
public class PlayerLocomotion : MonoBehaviour
{
Transform cameraObject;
InputHandler inputHandler;
Vector3 movDirection;
public float v;
public float h;
public float speed;
public float turnSmoothVelocity;
public bool controller;
public float turnSmoothTime;
public Camera cam;
[HideInInspector]
public Transform myTransform;
[HideInInspector]
public AnimatorHandler animatorHandler;
public new Rigidbody rigidbody;
public GameObject normalCamera;
[Header("Stats")]
[SerializeField]
float movementSpeed = 5;
[SerializeField]
float rotationSpeed = 10;
//Dash & Movement
public Vector3 moveDir;
void Start() {
rigidbody = GetComponent<Rigidbody>();
inputHandler = GetComponent<InputHandler>();
animatorHandler = GetComponentInChildren<AnimatorHandler>();
cameraObject = Camera.main.transform;
myTransform = transform;
cam = GetComponent<Camera>();
animatorHandler.Initialize();
controller = GetComponent<CharacterController>();
Cursor.lockState = CursorLockMode.Locked;
}
public void Update()
{
float delta = Time.deltaTime;
inputHandler.TickInput(delta);
HandleMovement(delta);
HandleRollingAndSprinting(delta);
Vector3 dir = new Vector3(h, 0, v).normalized;
if (dir.magnitude >= 0.1f)
{
float targetAngle = Mathf.Atan2(dir.x, dir.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);
transform.rotation = Quaternion.Euler(0f, angle, 0f);
moveDir = Quaternion.Euler(0, targetAngle, 0) * Vector3.forward;
controller.Move(moveDir.normalized * speed * Time.deltaTime);
}
}
#region Movimento
Vector3 normalVector;
Vector3 targetPosition;
private void HandleRotation(float delta)
{
Vector3 tragetDir = Vector3.zero;
float moveOverride = inputHandler.moveAmount;
tragetDir = cameraObject.forward * inputHandler.vertical;
tragetDir += cameraObject.right * inputHandler.horizontal;
tragetDir.Normalize();
tragetDir.y = 0;
if(tragetDir == Vector3.zero)
tragetDir = myTransform.forward;
float rs = rotationSpeed;
Quaternion tr = Quaternion.LookRotation(tragetDir);
Quaternion targetRotation = Quaternion.Slerp(myTransform.rotation, tr, rs * delta);
myTransform.rotation = targetRotation;
}
public void HandleMovement(float delta)
{
movDirection = cameraObject.forward * inputHandler.vertical;
movDirection += cameraObject.right * inputHandler.horizontal;
movDirection.Normalize();
movDirection.y = 0;
float speed = movementSpeed;
movDirection *= speed;
Vector3 projectedVelocity = Vector3.ProjectOnPlane(movDirection, normalVector);
rigidbody.velocity = projectedVelocity;
animatorHandler.UpdateAnimatorValues(inputHandler.moveAmount, 0);
if (animatorHandler.canRotate)
{
HandleRotation(delta);
}
}
public void HandleRollingAndSprinting(float delta)
{
if(animatorHandler.anim.GetBool("isInteracting"))
return;
if(inputHandler.rollFlag)
{
movDirection = cameraObject.forward * inputHandler.vertical;
movDirection += cameraObject.right * inputHandler.horizontal;
if(inputHandler.moveAmount > 0)
{
animatorHandler.PlayTargertAnimation("Rolling", true);
movDirection.y = 0;
Quaternion rollRotation = Quaternion.LookRotation(movDirection);
myTransform.rotation = rollRotation;
}
}
}
#endregion
}
}
Re: Erro no meu script de Dash
@PedroMPT cara qual versão da unity vc usa?? pq na versão 2019.4.1 não está reconhecendo o InputHandler e nem o AnimatorHandler
Re: Erro no meu script de Dash
2019.4.21f1. Qual versão recomendas usar?SauloeArthur escreveu:@PedroMPT cara qual versão da unity vc usa?? pq na versão 2019.4.1 não está reconhecendo o InputHandler e nem o AnimatorHandler
Re: Erro no meu script de Dash
eeeentão... será que vc não errou o nome das variaveis? pq a unity não está reconhecendo o InputHandler e nem o AnimatorHandler...
Re: Erro no meu script de Dash
Pelo que eu vi não. Só se no PlayerControlls no script do InputSauloeArthur escreveu:eeeentão... será que vc não errou o nome das variaveis? pq a unity não está reconhecendo o InputHandler e nem o AnimatorHandler...
AnimatorHandler
- Código:
[size=14]using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SG;
public class AnimatorHandler : MonoBehaviour
{
public Animator anim;
public PlayerLocomotion playerLocomotion;
public InputHandler inputHandler;
int vertical;
int horizontal;
public bool canRotate;
public void Initialize()
{
anim = GetComponent<Animator>();
inputHandler = GetComponentInParent<InputHandler>();
playerLocomotion = GetComponentInParent<PlayerLocomotion>();
vertical = Animator.StringToHash("Vertical");
horizontal = Animator.StringToHash("Horizontal");
}
public void UpdateAnimatorValues(float verticalMovement, float horizontalMovement)
{
#region Vertical
float v = 0;
if(verticalMovement > 0 && verticalMovement < 0.55f)
{
v = 0.5f;
}
else if(verticalMovement > 0.55f)
{
v = 1;
}
else if(verticalMovement < 0 && verticalMovement > -0.55f)
{
v = -0.5f;
}
else if(verticalMovement < -0.55f)
{
v = -1;
}
else
{
v = 0;
}
#endregion
#region Horizontal
float h = 0;
if(horizontalMovement > 0 && horizontalMovement < 0.55f)
{
h = 0.5f;
}
else if(horizontalMovement > 0.55f)
{
h = 1;
}
else if(horizontalMovement < 0 && horizontalMovement > -0.55f)
{
h = -0.5f;
}
else if(horizontalMovement < -0.55f)
{
h = -1;
}
else
{
h = 0;
}
#endregion
anim.SetFloat(vertical, v, 0.1f, Time.deltaTime);
anim.SetFloat(horizontal, h, 0.1f, Time.deltaTime);
}
public void PlayTargertAnimation(string targetAnim, bool isInteracting)
{
anim.applyRootMotion = isInteracting;
anim.SetBool("isInteracting", isInteracting);
anim.CrossFade(targetAnim, 0.2f);
}
public void CanRotate()
{
canRotate = true;
}
public void StopRotation()
{
canRotate = false;
}
private void OnAnimatorMove()
{
if(inputHandler.isInteracting == false)
return;
float delta = Time.deltaTime;
playerLocomotion.rigidbody.drag = 0;
Vector3 deltaPosition = anim.deltaPosition;
deltaPosition.y = 0;
Vector3 velocity = deltaPosition / delta;
playerLocomotion.rigidbody.velocity = velocity;
}
}
[/size]
Inputhandler. Agora neste tópico já estão todos os script que estão ligados
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace SG
{
public class InputHandler : MonoBehaviour
{
public float horizontal;
public float vertical;
public float moveAmount;
public float mouseX;
public float mouseY;
public bool b_Input;
public bool rollFlag;
public bool isInteracting;
PlayerControls inputActions;
Vector2 movementInput;
Vector2 cameraInput;
private void OnEnable() {
if (inputActions == null)
{
inputActions = new PlayerControls();
inputActions.PlayerMovement.Movement.performed += inputActions => movementInput = inputActions.ReadValue<Vector2>();
inputActions.PlayerMovement.Camera.performed += i => cameraInput = i.ReadValue<Vector2>();
}
inputActions.Enable();
}
private void OnDisable()
{
inputActions.Disable();
}
public void TickInput(float delta)
{
MoveInput(delta);
HandleRollInput(delta);
}
private void MoveInput(float delta)
{
horizontal = movementInput.x;
vertical = movementInput.y;
moveAmount = Mathf.Clamp01(Mathf.Abs(horizontal) + Mathf.Abs(vertical));
mouseX = cameraInput.x;
mouseY = cameraInput.y;
}
private void HandleRollInput(float delta)
{
if(b_Input)
{
rollFlag = true;
}
}
}
}
Re: Erro no meu script de Dash
mas quais são erros que estão dando nesses scripts que vc acabou de me mandar???
Re: Erro no meu script de Dash
o unico erro que esta é estesSauloeArthur escreveu:mas quais são erros que estão dando nesses scripts que vc acabou de me mandar???
Assets\Scripts\PlayerLocomotion.cs(71,24): error CS1061: 'bool' does not contain a definition for 'Move' and no accessible extension method 'Move' accepting a first argument of type 'bool' could be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\PlayerLocomotion.cs(66,81): error CS1061: 'Camera' does not contain a definition for 'eulerAngles' and no accessible extension method 'eulerAngles' accepting a first argument of type 'Camera' could be found (are you missing a using directive or an assembly reference?)
Este script o PlayerLocomotion ja esta ai em cima
Re: Erro no meu script de Dash
mano... pra acabar com os erros eu troquei bool por CharacterController e troquei Camera por Transform e tive que apagar o InputHandler e o AnimatorHandler pois a unity não estava reconhecendo e ficou assim:
só assim para os erros acabarem eu ainda vou dar uma estudada sobre esses AnimatorHandler e InputHandler
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace SG
{
public class PlayerLocomotion : MonoBehaviour
{
Transform cameraObject;
Vector3 movDirection;
public float v;
public float h;
public float speed;
public float turnSmoothVelocity;
public CharacterController controller;
public float turnSmoothTime;
public Transform cam;
[HideInInspector]
public Transform myTransform;
public new Rigidbody rigidbody;
public GameObject normalCamera;
[Header("Stats")]
[SerializeField]
float movementSpeed = 5;
[SerializeField]
float rotationSpeed = 10;
//Dash & Movement
public Vector3 moveDir;
void Start()
{
rigidbody = GetComponent<Rigidbody>();
cameraObject = Camera.main.transform;
myTransform = transform;
controller = GetComponent<CharacterController>();
Cursor.lockState = CursorLockMode.Locked;
}
public void Update()
{
float delta = Time.deltaTime;
HandleMovement(delta);
HandleRollingAndSprinting(delta);
Vector3 dir = new Vector3(h, 0, v).normalized;
if (dir.magnitude >= 0.1f)
{
float targetAngle = Mathf.Atan2(dir.x, dir.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);
transform.rotation = Quaternion.Euler(0f, angle, 0f);
moveDir = Quaternion.Euler(0, targetAngle, 0) * Vector3.forward;
controller.Move(moveDir.normalized * speed * Time.deltaTime);
}
}
#region Movimento
Vector3 normalVector;
Vector3 targetPosition;
private void HandleRotation(float delta)
{
Vector3 tragetDir = Vector3.zero;
tragetDir.Normalize();
tragetDir.y = 0;
if(tragetDir == Vector3.zero)
tragetDir = myTransform.forward;
float rs = rotationSpeed;
Quaternion tr = Quaternion.LookRotation(tragetDir);
Quaternion targetRotation = Quaternion.Slerp(myTransform.rotation, tr, rs * delta);
myTransform.rotation = targetRotation;
}
public void HandleMovement(float delta)
{
movDirection.Normalize();
movDirection.y = 0;
float speed = movementSpeed;
movDirection *= speed;
Vector3 projectedVelocity = Vector3.ProjectOnPlane(movDirection, normalVector);
rigidbody.velocity = projectedVelocity;
}
public void HandleRollingAndSprinting(float delta)
{
}
#endregion
}
}
só assim para os erros acabarem eu ainda vou dar uma estudada sobre esses AnimatorHandler e InputHandler
Re: Erro no meu script de Dash
eu agradeço o erros se foram sim, eu vou agora é ter de arranjar uma forma para meter isto a funcionar, senão vou ter de fazer outro jeito de animação, e estava a gostar muito desteSauloeArthur escreveu:mano... pra acabar com os erros eu troquei bool por CharacterController e troquei Camera por Transform e tive que apagar o InputHandler e o AnimatorHandler pois a unity não estava reconhecendo e ficou assim:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace SG
{
public class PlayerLocomotion : MonoBehaviour
{
Transform cameraObject;
Vector3 movDirection;
public float v;
public float h;
public float speed;
public float turnSmoothVelocity;
public CharacterController controller;
public float turnSmoothTime;
public Transform cam;
[HideInInspector]
public Transform myTransform;
public new Rigidbody rigidbody;
public GameObject normalCamera;
[Header("Stats")]
[SerializeField]
float movementSpeed = 5;
[SerializeField]
float rotationSpeed = 10;
//Dash & Movement
public Vector3 moveDir;
void Start()
{
rigidbody = GetComponent<Rigidbody>();
cameraObject = Camera.main.transform;
myTransform = transform;
controller = GetComponent<CharacterController>();
Cursor.lockState = CursorLockMode.Locked;
}
public void Update()
{
float delta = Time.deltaTime;
HandleMovement(delta);
HandleRollingAndSprinting(delta);
Vector3 dir = new Vector3(h, 0, v).normalized;
if (dir.magnitude >= 0.1f)
{
float targetAngle = Mathf.Atan2(dir.x, dir.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);
transform.rotation = Quaternion.Euler(0f, angle, 0f);
moveDir = Quaternion.Euler(0, targetAngle, 0) * Vector3.forward;
controller.Move(moveDir.normalized * speed * Time.deltaTime);
}
}
#region Movimento
Vector3 normalVector;
Vector3 targetPosition;
private void HandleRotation(float delta)
{
Vector3 tragetDir = Vector3.zero;
tragetDir.Normalize();
tragetDir.y = 0;
if(tragetDir == Vector3.zero)
tragetDir = myTransform.forward;
float rs = rotationSpeed;
Quaternion tr = Quaternion.LookRotation(tragetDir);
Quaternion targetRotation = Quaternion.Slerp(myTransform.rotation, tr, rs * delta);
myTransform.rotation = targetRotation;
}
public void HandleMovement(float delta)
{
movDirection.Normalize();
movDirection.y = 0;
float speed = movementSpeed;
movDirection *= speed;
Vector3 projectedVelocity = Vector3.ProjectOnPlane(movDirection, normalVector);
rigidbody.velocity = projectedVelocity;
}
public void HandleRollingAndSprinting(float delta)
{
}
#endregion
}
}
só assim para os erros acabarem eu ainda vou dar uma estudada sobre esses AnimatorHandler e InputHandler
Re: Erro no meu script de Dash
Pelo menos esta já é a base agora é fazer as animações a partir daí de forma correta e sem que dê erros no script
Re: Erro no meu script de Dash
exato, obrigadoSauloeArthur escreveu:Pelo menos esta já é a base agora é fazer as animações a partir daí de forma correta e sem que dê erros no script
Tópicos semelhantes
» erro erro e mais erro script de craft
» ERRO NO SCRIPT
» erro no script
» Não Acho o Erro no Script - é um script para o player se mover
» Erro no Script- "The script needs to derived from MonoBehavior"
» ERRO NO SCRIPT
» erro no script
» Não Acho o Erro no Script - é um script para o player se mover
» Erro no Script- "The script needs to derived from MonoBehavior"
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos