- Home /
Line of code not working
private Vector2 moveDirection = Vector3.zero;
public Animator anim;
public float moveSpeed = 5f;
public Rigidbody2D rb;
public Vector2 movement;
public Vector3 resPos;
public HPBar hP;
public bool icy;
public bool Laser;
void FixedUpdate (){
if (icy == true)
{
rb.MovePosition(rb.position + moveDirection * moveSpeed * Time.fixedDeltaTime);
}
else
{
rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
}
}
void Start()
{
hP = FindObjectOfType<HPBar>();
}
void Update () {
movement.x = Input.GetAxis("Horizontal");
movement.y = Input.GetAxis("Vertical");
if (icy == false)
{
moveDirection = movement;
}
}
public void Boing()
{
StartCoroutine(Respawn());
}
public IEnumerator Respawn()
{
anim.SetBool("Dead", true);
yield return new WaitForSeconds(5);
anim.SetBool("Dead", false);
gameObject.transform.position = resPos; // here is the error
hP.Init();
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Respawn")) {
resPos = gameObject.transform.position;
hP.setHealth(10);
}
if (other.CompareTag("Scorpion"))
{
hP.DamagePlayer(5);
}
if (other.CompareTag("Laser"))
{
hP.DamagePlayer(1);
}
if (other.CompareTag("SuperScorpion"))
{
hP.DamagePlayer(999999999);
}
if (other.CompareTag("LittleScorpion"))
{
hP.DamagePlayer(1);
}
if (other.CompareTag("warp"))
{
gameObject.transform.position = new Vector2(663, 26);
}
}
void OnTriggerExit2D(Collider2D other)
{
if (other.CompareTag("ice"))
{
icy = false;
}
}
The line in question, marked by a //, works fine half the time. The other half of the time, the game skips over the line.
Answer by Fuzzymoth_Games · Nov 20, 2020 at 03:40 PM
nvm i fixed it turns out there was a state machine behaviour that prevented the line from activating
Answer by oa5f · Nov 19, 2020 at 05:20 PM
Are you sure that the line is being skipped? The problem might not be that the line is being skipped but that the "resPos" is the same as transform.position. It could also be that the method never gets called. I can see that in the OnTriggerEnter2D function you set resPos to transform.position. I don't know what your code does but that could be the problem.
I would also recommend using a debugger (built into visual studio) to track down the issue further.
I have checked most of these problems, and the method does get called, and the "resPos" is never equal to transform.position when the function is called. But i haven't tried using the debugger yet. I'll come back after I use that.
Your answer
Follow this Question
Related Questions
Portal between scenes? 3 Answers
FPSContoller Teleportation Script is blocking somehow 2 Answers
Teleportation 1 Answer
Car made of boxes teleports on hard collision 0 Answers
how to make something teleport,how to change the place where something is 0 Answers