como faço para o personagem andar só que no ar?
2 participantes
Página 1 de 1
como faço para o personagem andar só que no ar?
meu personagem se movimenta normal, queria ativar o botão de pula e quando ele estiver no ar comesse a andar pra frente mas sem voltar ao chão e depois de um tempo ele caísse de novo, o problema é que não faço ideia de como fazer isso já tentei de tudo usando física rb etc
dkdetroi- Iniciante
- PONTOS : 1350
REPUTAÇÃO : 1
Idade : 29
Respeito as regras :
Re: como faço para o personagem andar só que no ar?
hmm quer fazer um tipo de Planar, Levitar. me parece simples. pelo que entendi você já tem a movimentação pronta incluindo o pulo.
se estiver usando RigidBody basta fazer algo como:
se estiver usando RigidBody basta fazer algo como:
- Código:
RigidBody rb;
//não esquece de atribuir o valor a ela, seja com getComponent ou deixando public e só arrastando
//Quando Quiser Levitar:
rb.useGravity = false;
//Quando Quiser Pousar:
rb.useGravity = true;
Re: como faço para o personagem andar só que no ar?
Se já tiver tentado isso que mandei e não deu certo me manda o seu código de movimentação.
Re: como faço para o personagem andar só que no ar?
não sei se pode mas vou deixar um link de video mostrando mais ou menos o que estou tentando fazer... quando o play para um pouco no ar eu aperto um botão e ele se move para frente no ar
https://youtu.be/SN50oPDWFfo
https://youtu.be/SN50oPDWFfo
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
public class Playercontroler : MonoBehaviour
{
Transform cameraTransform;
public float MoveSpeed = 3f;// corre
public float speedRun; //velocidade
public float parado = 0f;
public float SmoothRotationTime = 0.25f;
float currentVeclocity;
public Animator anim;
public Camera cam;
public float JumpForce;
public CapsuleCollider col;
public Rigidbody rb;
public LayerMask GroundLayers;
float currentSpeed;
float speedVelocity;
float X;//horizonral
float Z;//vertical frente
// public float Focal Length = 0.5f;
public bool enableMobileInputs = false;
public FixedJoystick joystick;
public FixedButton speed;
public FixedButton jump;
public float speedSprint;
private void Start()
{
cameraTransform = Camera.main.transform;
MoveSpeed = speedRun;
speed = GameObject.Find("Corre").GetComponent<FixedButton>();
jump = GameObject.Find("Pulo").GetComponent<FixedButton>();
col = GetComponent<CapsuleCollider>();
rb = GetComponent<Rigidbody>();
cam = GetComponent<Camera>();
}
public void Update()
{
Vector2 input = Vector2.zero;
if (enableMobileInputs)
{
input = new Vector2(joystick.Horizontal, joystick.Vertical);
}
else
{
input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
X = Input.GetAxisRaw("Horizontal");
Z = Input.GetAxisRaw("Vertical");
}
Vector2 inputDir = input.normalized;
if (inputDir != Vector2.zero)
{
float rotation = Mathf.Atan2(inputDir.x, inputDir.y) * Mathf.Rad2Deg + cameraTransform.eulerAngles.y;
transform.eulerAngles = Vector3.up * Mathf.SmoothDampAngle(transform.eulerAngles.y, rotation, ref currentVeclocity, SmoothRotationTime);
}
float tragetSpeed = MoveSpeed * inputDir.magnitude;
currentSpeed = Mathf.SmoothDamp(currentSpeed, tragetSpeed, ref speedVelocity, 0.1f);
if (speed.Pressed)
{
MoveSpeed = speedSprint;
}
else
MoveSpeed = speedRun;
transform.Translate(transform.forward * (MoveSpeed * inputDir.magnitude) * Time.deltaTime, Space.World);
animationmobile();
if (IsGrounded() && (jump.Pressed))
{
rb.AddForce(Vector3.up * JumpForce, ForceMode.Impulse);
anim.SetBool("jump", true);
MoveSpeed = parado;
}
else
{
anim.SetBool("jump", false);
rb.AddForce(Vector3.down * JumpForce, ForceMode.Impulse);
}
}
public void flying()
{
}
public void animationmobile()
{
if (!joystick.Horizontal.Equals(0) || !joystick.Vertical.Equals(0))
{
if (speed.Pressed)
{
anim.SetBool("sprint", true);
}
else
{
anim.SetBool("sprint", false);
anim.SetBool("running", true);
}
}
else
{
anim.SetBool("running", false);
anim.SetBool("sprint", false);
}
}
private bool IsGrounded()
{
return Physics.CheckCapsule(col.bounds.center, new Vector3(col.bounds.center.x, col.bounds.min.y, col.bounds.center.z), col.radius * 50f, GroundLayers);
}
}
dkdetroi- Iniciante
- PONTOS : 1350
REPUTAÇÃO : 1
Idade : 29
Respeito as regras :
Re: como faço para o personagem andar só que no ar?
Cara, por que tu usa o transform.Translate, ele é ruim, pois não detecta colisão.
tu poderia usar o RigidBody ou o CharacterController
tu poderia usar o RigidBody ou o CharacterController
Re: como faço para o personagem andar só que no ar?
dkdetroi escreveu:não sei se pode mas vou deixar um link de video mostrando mais ou menos o que estou tentando fazer... quando o play para um pouco no ar eu aperto um botão e ele se move para frente no ar
https://youtu.be/SN50oPDWFfo
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
public class Playercontroler : MonoBehaviour
{
Transform cameraTransform;
public float MoveSpeed = 3f;// corre
public float speedRun; //velocidade
public float parado = 0f;
public float SmoothRotationTime = 0.25f;
float currentVeclocity;
public Animator anim;
public Camera cam;
public float JumpForce;
public CapsuleCollider col;
public Rigidbody rb;
public LayerMask GroundLayers;
float currentSpeed;
float speedVelocity;
float X;//horizonral
float Z;//vertical frente
// public float Focal Length = 0.5f;
public bool enableMobileInputs = false;
public FixedJoystick joystick;
public FixedButton speed;
public FixedButton jump;
public float speedSprint;
private void Start()
{
cameraTransform = Camera.main.transform;
MoveSpeed = speedRun;
speed = GameObject.Find("Corre").GetComponent<FixedButton>();
jump = GameObject.Find("Pulo").GetComponent<FixedButton>();
col = GetComponent<CapsuleCollider>();
rb = GetComponent<Rigidbody>();
cam = GetComponent<Camera>();
}
public void Update()
{
Vector2 input = Vector2.zero;
if (enableMobileInputs)
{
input = new Vector2(joystick.Horizontal, joystick.Vertical);
}
else
{
input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
X = Input.GetAxisRaw("Horizontal");
Z = Input.GetAxisRaw("Vertical");
}
Vector2 inputDir = input.normalized;
if (inputDir != Vector2.zero)
{
float rotation = Mathf.Atan2(inputDir.x, inputDir.y) * Mathf.Rad2Deg + cameraTransform.eulerAngles.y;
transform.eulerAngles = Vector3.up * Mathf.SmoothDampAngle(transform.eulerAngles.y, rotation, ref currentVeclocity, SmoothRotationTime);
}
float tragetSpeed = MoveSpeed * inputDir.magnitude;
currentSpeed = Mathf.SmoothDamp(currentSpeed, tragetSpeed, ref speedVelocity, 0.1f);
if (speed.Pressed)
{
MoveSpeed = speedSprint;
}
else
MoveSpeed = speedRun;
transform.Translate(transform.forward * (MoveSpeed * inputDir.magnitude) * Time.deltaTime, Space.World);
animationmobile();
}
dkdetroi- Iniciante
- PONTOS : 1350
REPUTAÇÃO : 1
Idade : 29
Respeito as regras :
Tópicos semelhantes
» Como faço pra fazer o meu personagem andar no meu jogo isometrico
» como faço para meu personagem agachar?
» Como faço para animar meu personagem?
» Como faço para meu personagem virar de acordo com o movimento?
» Como faço pro personagem correr na direção da câmera para Android
» como faço para meu personagem agachar?
» Como faço para animar meu personagem?
» Como faço para meu personagem virar de acordo com o movimento?
» Como faço pro personagem correr na direção da câmera para Android
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos