Script de Mover - Estilo Subway Surfs
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Script de Mover - Estilo Subway Surfs
Fala galera, alguem poderia me ajudar com esse script ele esta funcional perfeitamente so que o pulo dele esta muito sensivel tem vez que move para o lado e ele esta pulando eu queria saber como fazer para melhorar isso!
Agradeço desde já, Obrigadoo!
Script:
Agradeço desde já, Obrigadoo!
Script:
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class Mover : MonoBehaviour {
private float ponteiroX, ponteiroY, novaPosicX;
private int indicePosic;
public bool podeMover, estaNoChao, pulouR, parar;
private Vector3 posicInicial;
[Range(0.01f,1)]public float TempoParaMover = 0.15f;
[Range(1,5)]public int QuantoMover = 1;
[Range(1,20)]public float forcaDoPulo = 5.0f;
[Range(0,20)]public float velocidadeJogador = 3.0f;
public bool podePular = true;
public LayerMask LayersNaoIgnoradas = -1;
private Rigidbody corpoRigido;
public float velocidade = 0.01f;
public float tempo = 0.01f;
public float cronometro;
void Start(){
corpoRigido = GetComponent<Rigidbody> ();
corpoRigido.constraints = RigidbodyConstraints.FreezeRotation;
posicInicial = transform.position;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
indicePosic = 0;
pulouR = false;
podeMover = true;
}
void Update () {
velocidadeJogador = velocidadeJogador + Time.deltaTime * velocidade;
estaNoChao = Physics.Linecast (transform.position, transform.position - Vector3.up, LayersNaoIgnoradas);
if (podeMover) {
DetectarMovimento ();
}
if(parar == false){
podeMover = true;
}
if(parar == true){
podeMover = false;
cronometro += Time.deltaTime;
if (cronometro > tempo) {
parar = false;
cronometro = 0;
}
}
if (Input.GetMouseButton (0)) {
parar = true;
}
if (Input.touchCount > 0){
parar = true;
}
}
IEnumerator EsperarParaMover(float tempo) {
yield return new WaitForSeconds(tempo);
}
IEnumerator EsperarParaPular(float tempo) {
yield return new WaitForSeconds(tempo);
pulouR = false;
}
void DetectarMovimento(){
StartCoroutine (EsperarParaMover(TempoParaMover));
ponteiroX = ponteiroY = 0;
if (Input.GetMouseButton (0)) {
ponteiroX = Input.GetAxis ("Mouse X");
ponteiroY = Input.GetAxis ("Mouse Y");
}
if (Input.touchCount > 0){
ponteiroX = Input.touches[0].deltaPosition.x;
ponteiroY = Input.touches[0].deltaPosition.y;
}
//DETECTAR EIXO X
if (ponteiroX > 0) {
if (ponteiroY < 0.5f)
{
indicePosic ++;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
print ("Moveu");
parar = true;
}
}
else if (ponteiroX < 0) {
if (ponteiroY < 0.5f)
{
indicePosic --;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
print ("Moveu2");
parar = true;
}
}
//DETECTAR EIXO Y
if (ponteiroY > 0.1f && podePular) {
Pular ();
}
}
void FixedUpdate(){
Vector3 proximaPosic = new Vector3 (novaPosicX, transform.position.y, transform.position.z);
transform.position = Vector3.Lerp (transform.position, proximaPosic, Time.deltaTime * 5);
corpoRigido.velocity = new Vector3 (corpoRigido.velocity.x, corpoRigido.velocity.y, velocidadeJogador);
}
void Pular(){
if(estaNoChao == true && pulouR == false){
corpoRigido.AddForce(Vector3.up * forcaDoPulo, ForceMode.Impulse);
pulouR = true;
StartCoroutine (EsperarParaPular(0.5f));
}
}
}
Duarte- Programador
- PONTOS : 3353
REPUTAÇÃO : 97
Idade : 24
Áreas de atuação : Programação
Desenvolvedor Android
Respeito as regras :
Re: Script de Mover - Estilo Subway Surfs
Nesse if aqui:
A sensibilidade está como 0.1f
Mude ela para uns 0.15f, 0.2f, vai testando.
- Código:
if (ponteiroY > 0.1f && podePular) {
Pular ();
}
A sensibilidade está como 0.1f
Mude ela para uns 0.15f, 0.2f, vai testando.
Re: Script de Mover - Estilo Subway Surfs
Pode Deixar vou testar aqui Obrigado!
Duarte- Programador
- PONTOS : 3353
REPUTAÇÃO : 97
Idade : 24
Áreas de atuação : Programação
Desenvolvedor Android
Respeito as regras :
Re: Script de Mover - Estilo Subway Surfs
CARA AGORA QUE PERCEBI, ESSE TÓPICO TAMBÉM SERVE DE TUTORIAL POR CAUSA DO SCRIPT POSTADO!Duarte escreveu:Fala galera, alguem poderia me ajudar com esse script ele esta funcional perfeitamente so que o pulo dele esta muito sensivel tem vez que move para o lado e ele esta pulando eu queria saber como fazer para melhorar isso!
Agradeço desde já, Obrigadoo!
Script:
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class Mover : MonoBehaviour {
private float ponteiroX, ponteiroY, novaPosicX;
private int indicePosic;
public bool podeMover, estaNoChao, pulouR, parar;
private Vector3 posicInicial;
[Range(0.01f,1)]public float TempoParaMover = 0.15f;
[Range(1,5)]public int QuantoMover = 1;
[Range(1,20)]public float forcaDoPulo = 5.0f;
[Range(0,20)]public float velocidadeJogador = 3.0f;
public bool podePular = true;
public LayerMask LayersNaoIgnoradas = -1;
private Rigidbody corpoRigido;
public float velocidade = 0.01f;
public float tempo = 0.01f;
public float cronometro;
void Start(){
corpoRigido = GetComponent<Rigidbody> ();
corpoRigido.constraints = RigidbodyConstraints.FreezeRotation;
posicInicial = transform.position;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
indicePosic = 0;
pulouR = false;
podeMover = true;
}
void Update () {
velocidadeJogador = velocidadeJogador + Time.deltaTime * velocidade;
estaNoChao = Physics.Linecast (transform.position, transform.position - Vector3.up, LayersNaoIgnoradas);
if (podeMover) {
DetectarMovimento ();
}
if(parar == false){
podeMover = true;
}
if(parar == true){
podeMover = false;
cronometro += Time.deltaTime;
if (cronometro > tempo) {
parar = false;
cronometro = 0;
}
}
if (Input.GetMouseButton (0)) {
parar = true;
}
if (Input.touchCount > 0){
parar = true;
}
}
IEnumerator EsperarParaMover(float tempo) {
yield return new WaitForSeconds(tempo);
}
IEnumerator EsperarParaPular(float tempo) {
yield return new WaitForSeconds(tempo);
pulouR = false;
}
void DetectarMovimento(){
StartCoroutine (EsperarParaMover(TempoParaMover));
ponteiroX = ponteiroY = 0;
if (Input.GetMouseButton (0)) {
ponteiroX = Input.GetAxis ("Mouse X");
ponteiroY = Input.GetAxis ("Mouse Y");
}
if (Input.touchCount > 0){
ponteiroX = Input.touches[0].deltaPosition.x;
ponteiroY = Input.touches[0].deltaPosition.y;
}
//DETECTAR EIXO X
if (ponteiroX > 0) {
if (ponteiroY < 0.5f)
{
indicePosic ++;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
print ("Moveu");
parar = true;
}
}
else if (ponteiroX < 0) {
if (ponteiroY < 0.5f)
{
indicePosic --;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
print ("Moveu2");
parar = true;
}
}
//DETECTAR EIXO Y
if (ponteiroY > 0.1f && podePular) {
Pular ();
}
}
void FixedUpdate(){
Vector3 proximaPosic = new Vector3 (novaPosicX, transform.position.y, transform.position.z);
transform.position = Vector3.Lerp (transform.position, proximaPosic, Time.deltaTime * 5);
corpoRigido.velocity = new Vector3 (corpoRigido.velocity.x, corpoRigido.velocity.y, velocidadeJogador);
}
void Pular(){
if(estaNoChao == true && pulouR == false){
corpoRigido.AddForce(Vector3.up * forcaDoPulo, ForceMode.Impulse);
pulouR = true;
StartCoroutine (EsperarParaPular(0.5f));
}
}
}
Gabriel César O- Profissional
- PONTOS : 3985
REPUTAÇÃO : 217
Idade : 23
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
Re: Script de Mover - Estilo Subway Surfs
Esse Script ai estava com uns bugs!
Esqueci de avisar para quem for usar, esse Script é do marcos eu so modifiquei.
e a velocidade dele almenta sozinho de acordo com o tempo jogado, Linha 28.
Agora esse ta 100%
Esqueci de avisar para quem for usar, esse Script é do marcos eu so modifiquei.
e a velocidade dele almenta sozinho de acordo com o tempo jogado, Linha 28.
Agora esse ta 100%
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class Mover : MonoBehaviour {
private float ponteiroX, ponteiroY, novaPosicX;
private int indicePosic;
public bool podeMover, estaNoChao, pulouR, parar;
private Vector3 posicInicial;
[Range(1,5)]public int QuantoMover = 1;
[Range(1,20)]public float forcaDoPulo = 5.0f;
[Range(0,20)]public float velocidadeJogador = 3.0f;
public bool podePular = true;
public LayerMask LayersNaoIgnoradas = -1;
private Rigidbody corpoRigido;
public float velocidade = 0.01f;
void Start(){
corpoRigido = GetComponent<Rigidbody> ();
corpoRigido.constraints = RigidbodyConstraints.FreezeRotation;
posicInicial = transform.position;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
indicePosic = 0;
pulouR = false;
podeMover = true;
}
void Update () {
velocidadeJogador = velocidadeJogador + Time.deltaTime * velocidade;
estaNoChao = Physics.Linecast (transform.position, transform.position - Vector3.up, LayersNaoIgnoradas);
if (podeMover) {
DetectarMovimento ();
}
if(parar == false){
podeMover = true;
}
if(parar == true){
podeMover = false;
Tatocando ();
}
}
IEnumerator EsperarParaPular(float tempo) {
yield return new WaitForSeconds(tempo);
pulouR = false;
}
void DetectarMovimento(){
ponteiroX = ponteiroY = 0;
if (Input.GetMouseButton (0)) {
ponteiroX = Input.GetAxis ("Mouse X");
ponteiroY = Input.GetAxis ("Mouse Y");
}
if (Input.touchCount > 0){
ponteiroX = Input.touches[0].deltaPosition.x;
ponteiroY = Input.touches[0].deltaPosition.y;
}
//DETECTAR EIXO X
if (ponteiroX > 0) {
indicePosic ++;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
parar = true;
}
else if (ponteiroX < 0) {
indicePosic --;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
parar = true;
}
//DETECTAR EIXO Y
if (ponteiroY > 0.15f && podePular) {
Pular ();
}
}
void FixedUpdate(){
Vector3 proximaPosic = new Vector3 (novaPosicX, transform.position.y, transform.position.z);
transform.position = Vector3.Lerp (transform.position, proximaPosic, Time.deltaTime * 5);
corpoRigido.velocity = new Vector3 (corpoRigido.velocity.x, corpoRigido.velocity.y, velocidadeJogador);
}
void Pular(){
if(estaNoChao == true && pulouR == false){
corpoRigido.AddForce(Vector3.up * forcaDoPulo, ForceMode.Impulse);
pulouR = true;
StartCoroutine (EsperarParaPular(0.5f));
}
}
void Tatocando ()
{
if (Input.GetMouseButton (0)) {
parar = true;
} else {
parar = false;
}
}
}
Duarte- Programador
- PONTOS : 3353
REPUTAÇÃO : 97
Idade : 24
Áreas de atuação : Programação
Desenvolvedor Android
Respeito as regras :
Re: Script de Mover - Estilo Subway Surfs
TOP MANIN!Duarte escreveu:Esse Script ai estava com uns bugs!
Esqueci de avisar para quem for usar, esse Script é do marcos eu so modifiquei.
e a velocidade dele almenta sozinho de acordo com o tempo jogado, Linha 28.
Agora esse ta 100%
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class Mover : MonoBehaviour {
private float ponteiroX, ponteiroY, novaPosicX;
private int indicePosic;
public bool podeMover, estaNoChao, pulouR, parar;
private Vector3 posicInicial;
[Range(1,5)]public int QuantoMover = 1;
[Range(1,20)]public float forcaDoPulo = 5.0f;
[Range(0,20)]public float velocidadeJogador = 3.0f;
public bool podePular = true;
public LayerMask LayersNaoIgnoradas = -1;
private Rigidbody corpoRigido;
public float velocidade = 0.01f;
void Start(){
corpoRigido = GetComponent<Rigidbody> ();
corpoRigido.constraints = RigidbodyConstraints.FreezeRotation;
posicInicial = transform.position;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
indicePosic = 0;
pulouR = false;
podeMover = true;
}
void Update () {
velocidadeJogador = velocidadeJogador + Time.deltaTime * velocidade;
estaNoChao = Physics.Linecast (transform.position, transform.position - Vector3.up, LayersNaoIgnoradas);
if (podeMover) {
DetectarMovimento ();
}
if(parar == false){
podeMover = true;
}
if(parar == true){
podeMover = false;
Tatocando ();
}
}
IEnumerator EsperarParaPular(float tempo) {
yield return new WaitForSeconds(tempo);
pulouR = false;
}
void DetectarMovimento(){
ponteiroX = ponteiroY = 0;
if (Input.GetMouseButton (0)) {
ponteiroX = Input.GetAxis ("Mouse X");
ponteiroY = Input.GetAxis ("Mouse Y");
}
if (Input.touchCount > 0){
ponteiroX = Input.touches[0].deltaPosition.x;
ponteiroY = Input.touches[0].deltaPosition.y;
}
//DETECTAR EIXO X
if (ponteiroX > 0) {
indicePosic ++;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
parar = true;
}
else if (ponteiroX < 0) {
indicePosic --;
novaPosicX = posicInicial.x + indicePosic*QuantoMover;
parar = true;
}
//DETECTAR EIXO Y
if (ponteiroY > 0.15f && podePular) {
Pular ();
}
}
void FixedUpdate(){
Vector3 proximaPosic = new Vector3 (novaPosicX, transform.position.y, transform.position.z);
transform.position = Vector3.Lerp (transform.position, proximaPosic, Time.deltaTime * 5);
corpoRigido.velocity = new Vector3 (corpoRigido.velocity.x, corpoRigido.velocity.y, velocidadeJogador);
}
void Pular(){
if(estaNoChao == true && pulouR == false){
corpoRigido.AddForce(Vector3.up * forcaDoPulo, ForceMode.Impulse);
pulouR = true;
StartCoroutine (EsperarParaPular(0.5f));
}
}
void Tatocando ()
{
if (Input.GetMouseButton (0)) {
parar = true;
} else {
parar = false;
}
}
}
Gabriel César O- Profissional
- PONTOS : 3985
REPUTAÇÃO : 217
Idade : 23
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Mover personagem com Touch, no estilo SUBWAY SURFERS
» script de pontuação estilo subway surfers
» No script da "Câmera estilo Gta" como faço para o mouse mover a câmera ?
» Jogo estilo subway surf
» Não Acho o Erro no Script - é um script para o player se mover
» script de pontuação estilo subway surfers
» No script da "Câmera estilo Gta" como faço para o mouse mover a câmera ?
» Jogo estilo subway surf
» Não Acho o Erro no Script - é um script para o player se mover
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos