Physics2D para Physics?
4 participantes
Página 1 de 1
Physics2D para Physics?
Estou tentando aqui fazer esse script para 2D para 3D
- Código:
Physics2D.queriesStartInColliders = false;
RaycastHit2D hit= Physics2D.Raycast (transform.position, Vector2.right * transform.localScale.x, distance, boxMask);
Assim desse jeito mais da erros
Physics.queriesStartInColliders = false;
RaycastHit hit= Physics.Raycast (transform.position, Vector3.right * transform.localScale.x, distance, boxMask);
Re: Physics2D para Physics?
Não entendi essa parte: "Para 2D para 3D";
o que exatamente você quer fazer?
quais são os erros?
Please, poste o seu script completo;
o que exatamente você quer fazer?
quais são os erros?
Please, poste o seu script completo;
Phph09- Profissional
- PONTOS : 3789
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Physics2D para Physics?
No 2d, o Vector.right seria a frente e costa do personagem... Em 3d, ele seria os lados... Para isso, use o Vector.forward ou transform.forward, caso seja o eixo em relação a rotação do mesmo, em vez de global... E o RaycatHit, não é retornado como no 2d, só prestar atenção e ver a documentação, ele retorna um variável do tipo bool para estamentos... O parâmetro Hit, vem depois da direção e com o out junto, por ser uma variável retornada da função, mas em parâmetro, ex:
https://docs.unity3d.com/ScriptReference/Physics.Raycast.html
https://docs.unity3d.com/ScriptReference/RaycastHit.html
- Código:
RaycastHit tempHit = new RaycastHit();
if(Physics.Raycast(transform.position, Vector.forward * transform.localScale.z, out tempHit, distance, boxMask)){
Debug.Log(string.Format("I've something... The name is {0}, tempHit.transform.name));
}
https://docs.unity3d.com/ScriptReference/Physics.Raycast.html
https://docs.unity3d.com/ScriptReference/RaycastHit.html
Re: Physics2D para Physics?
Sao 2 script para impurrar objetos mais sao para 2D vou postar eles aqui fica melhor de entender
- Código:
//Esse e do personagem
using UnityEngine;
using System.Collections;
public class playerpush : MonoBehaviour {
public float distance=1f;
public LayerMask boxMask;
GameObject box;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Physics2D.queriesStartInColliders = false;
RaycastHit2D hit= Physics2D.Raycast (transform.position, Vector2.right * transform.localScale.x, distance, boxMask);
if (hit.collider != null && hit.collider.gameObject.tag == "pushable" && Input.GetKeyDown (KeyCode.E)) {
box = hit.collider.gameObject;
box.GetComponent<FixedJoint2D> ().connectedBody = this.GetComponent<Rigidbody2D> ();
box.GetComponent<FixedJoint2D> ().enabled = true;
box.GetComponent<boxpull> ().beingPushed = true;
} else if (Input.GetKeyUp (KeyCode.E)) {
box.GetComponent<FixedJoint2D> ().enabled = false;
box.GetComponent<boxpull> ().beingPushed = false;
}
}
void OnDrawGizmos()
{
Gizmos.color = Color.yellow;
Gizmos.DrawLine (transform.position, (Vector2)transform.position + Vector2.right * transform.localScale.x * distance);
}
}
- Código:
//esse e do cubo
using UnityEngine;
using System.Collections;
public class boxpull : MonoBehaviour {
public float defaultMass;
public float imovableMass;
public bool beingPushed;
float xPos;
public Vector3 lastPos;
public int mode;
public int colliding;
// Use this for initialization
void Start () {
xPos = transform.position.x;
lastPos = transform.position;
}
// Update is called once per frame
void FixedUpdate () {
if (mode == 0) {
if (beingPushed == false) {
transform.position = new Vector3 (xPos, transform.position.y);
} else
xPos = transform.position.x;
} else if (mode == 1) {
if (beingPushed == false) {
GetComponent<Rigidbody2D> ().mass=imovableMass;
} else {
GetComponent<Rigidbody2D> ().mass=defaultMass;
// GetComponent<Rigidbody2D> ().isKinematic = false;
}
}
}
}
Re: Physics2D para Physics?
Eu quero fazer desse jeito mais esta dando erros
Erros
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class playerpush : MonoBehaviour {
public float distance=1f;
public LayerMask boxMask;
GameObject box;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Physics.queriesStartInColliders = false;
RaycastHit hit= Physics.Raycast (transform.position, Vector3.right * transform.localScale.x, distance, boxMask);
if (hit.collider != null && hit.collider.gameObject.tag == "pushable" && Input.GetKeyDown (KeyCode.E)) {
box = hit.collider.gameObject;
box.GetComponent<FixedJoint> ().connectedBody = this.GetComponent<Rigidbody> ();
box.GetComponent<FixedJoint> ().enabled = true;
box.GetComponent<Caixa> ().beingPushed = true;
} else if (Input.GetKeyUp (KeyCode.E)) {
box.GetComponent<FixedJoint> ().enabled = false;
box.GetComponent<Caixa> ().beingPushed = false;
}
}
void OnDrawGizmos()
{
Gizmos.color = Color.yellow;
Gizmos.DrawLine (transform.position, (Vector3)transform.position + Vector3.right * transform.localScale.x * distance);
}
}
- Código:
using UnityEngine;
using System.Collections;
public class Caixa : MonoBehaviour {//Caixa para ser empurrada
public float defaultMass;
public float imovableMass;
public bool beingPushed;
float xPos;
public Vector3 lastPos;
public int mode;
public int colliding;
// Use this for initialization
void Start () {
xPos = transform.position.x;
lastPos = transform.position;
}
// Update is called once per frame
void FixedUpdate () {
if (mode == 0) {
if (beingPushed == false) {
transform.position = new Vector3 (xPos, transform.position.y);
} else
xPos = transform.position.x;
} else if (mode == 1) {
if (beingPushed == false) {
GetComponent<Rigidbody> ().mass=imovableMass;
} else {
GetComponent<Rigidbody> ().mass=defaultMass;
// GetComponent<Rigidbody> ().isKinematic = false;
}
}
}
}
Erros
- Código:
Assets/Scripts/playerpush.cs(19,13): error CS0117: `UnityEngine.Physics' does not contain a definition for `queriesStartInColliders'
Assets/Scripts/playerpush.cs(20,29): error CS0029: Cannot implicitly convert type `bool' to `UnityEngine.RaycastHit'
Assets/Scripts/playerpush.cs(27,39): error CS1061: Type `UnityEngine.FixedJoint' does not contain a definition for `enabled' and no extension method `enabled' of type `UnityEngine.FixedJoint' could be found. Are you missing an assembly reference?
Assets/Scripts/playerpush.cs(31,39): error CS1061: Type `UnityEngine.FixedJoint' does not contain a definition for `enabled' and no extension method `enabled' of type `UnityEngine.FixedJoint' could be found. Are you missing an assembly reference?
Re: Physics2D para Physics?
Tu viu o exemplo que te mandei? Não tem nada a ver com o que tu fez... Preste mais atenção nos logs, está bem explícitos os erros:
1° - a classe Physics, ela não contém a variável "queriesStartInColliders".
2° - o RaycastHit é um RaycastHit, e o Physics.Raycast, como eu JÁ DISSE, retorna um bool, não há como converter o bool em RaycastHit, o correto é fazer como eu mostrei no exemplo, pelo parametro out.
3° - A classe FixedJoint não há como ser ativada ou desativada via "enabled", não contém a definição para isso...
Com essas dicas, tente reformular o seu script.
1° - a classe Physics, ela não contém a variável "queriesStartInColliders".
2° - o RaycastHit é um RaycastHit, e o Physics.Raycast, como eu JÁ DISSE, retorna um bool, não há como converter o bool em RaycastHit, o correto é fazer como eu mostrei no exemplo, pelo parametro out.
3° - A classe FixedJoint não há como ser ativada ou desativada via "enabled", não contém a definição para isso...
Com essas dicas, tente reformular o seu script.
Re: Physics2D para Physics?
Fiz assim mais agora esta mandando ele pra lonje do cenario sem eu chegar perto dele?
Qualque lugar que eu coloca o cubo a position dele Z vai pra 0.
se ele iniciar mode for 0 ele faz isso
se mode for 1 ele fica fixo e nao sai do lugar
Qualque lugar que eu coloca o cubo a position dele Z vai pra 0.
se ele iniciar mode for 0 ele faz isso
se mode for 1 ele fica fixo e nao sai do lugar
- Código:
using UnityEngine;
using System.Collections;
public class Caixa : MonoBehaviour {//Caixa para ser empurrada
public float defaultMass;
public float imovableMass;
public bool beingPushed;
float xPos;
public Vector3 lastPos;
public int mode;
public int colliding;
// Use this for initialization
void Start () {
xPos = transform.position.x;
lastPos = transform.position;
}
// Update is called once per frame
void FixedUpdate () {
if (mode == 0) {
if (beingPushed == false) {
transform.position = new Vector3 (xPos, transform.position.y);
} else
xPos = transform.position.x;
} else if (mode == 1) {
if (beingPushed == false) {
GetComponent<Rigidbody> ().mass=imovableMass;
} else {
GetComponent<Rigidbody> ().mass=defaultMass;
// GetComponent<Rigidbody> ().isKinematic = false;
}
}
}
}
Re: Physics2D para Physics?
ta, a questão é que você manda um raycast para "frente" no 2D, mas quando você vai converter para 3D, para onde você quer mandar o Raycast, para todos os lados?
Re: Physics2D para Physics?
Eu quero mandar ele pra frente
Estou fazendo esse sistema por esse tutorial do video so que e em 2D .
Estou fazendo esse sistema por esse tutorial do video so que e em 2D .
Re: Physics2D para Physics?
Ta, a questão é, "pra frente" no 3D é relativo... você pode conseguir um "para frente" em relação ao seu jogador ou em relação ao próprio transform
Re: Physics2D para Physics?
Como eu posso ajustar esse script?
Tem algum tutorial sobre esse sistema ?
Tem algum tutorial sobre esse sistema ?
Re: Physics2D para Physics?
Tem, a questão é, você deseja mover objetos com o Mouse no 3D? ou apenas arrastar mesmo?
Eu fiz este sistema:https://www.schultzgames.com/t6770-tutorial-mover-girar-e-lancar-objetos-com-o-mouse-unity-2017-atualizado
se a massa do objeto for bem grande, vai ser lento para arrastar ele, como se ele fosse pesado.
Se isto não servir, tem que ser feito um sistema para 3D mesmo
Eu fiz este sistema:https://www.schultzgames.com/t6770-tutorial-mover-girar-e-lancar-objetos-com-o-mouse-unity-2017-atualizado
se a massa do objeto for bem grande, vai ser lento para arrastar ele, como se ele fosse pesado.
Se isto não servir, tem que ser feito um sistema para 3D mesmo
Tópicos semelhantes
» Ajuda com o Physics2D.OverlapAreaAll
» [Duvida] Unity5 - Physics2D.Raycast não obedece distância máxima.
» Car Physics
» Physics Bug
» Problema com script e physics 2d
» [Duvida] Unity5 - Physics2D.Raycast não obedece distância máxima.
» Car Physics
» Physics Bug
» Problema com script e physics 2d
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos