- Home /
Question by
imaphatduc · May 04, 2020 at 03:57 AM ·
playerfalse
Duet Game Problem
I'm re-making the DUET game and found out some problems. The problem is that when my player hits an obstacle, most of the time it works, sometimes both two "balls" disappeared, sometimes they are still moving up, even though I have a script to make it stop. These are my codes:
// Player Moving Up Script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerUp : MonoBehaviour
{
public float upVelocity = 5f;
private Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
rb.velocity = Vector2.up * upVelocity;
}
}
Rotate the player:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerRotator : MonoBehaviour
{
#region Variables
public float rotateSpeed = 120f;
Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
float horizontal = Input.GetAxisRaw("Horizontal");
transform.Rotate(0f, 0f, -horizontal * rotateSpeed * Time.deltaTime);
}
}
PlayerCollision:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class PlayerCollision : MonoBehaviour
{
#region Variables
private bool isRestart = false;
private bool camStop = false;
private bool playerStop = false;
private bool playerRotate = false;
public Transform[] childTransforms;
public Rigidbody2D rb;
public FollowPlayer follow;
private PlayerUp playerUp;
private PlayerRotator rotator;
void Start()
{
playerUp = GetComponent<PlayerUp>();
rotator = GetComponent<PlayerRotator>();
}
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.transform.tag == "Obstacle")
{
StopMoving();
Invoke("RestartLevel", 1.5f);
}
}
void StopMoving()
{
if (camStop == false)
{
camStop = true;
follow.enabled = false;
}
if (playerStop == false)
{
playerStop = true;
playerUp.enabled = false;
}
if (playerRotate == false)
{
playerRotate = true;
rotator.enabled = false;
}
}
void RestartLevel()
{
if (isRestart == false)
{
isRestart = true;
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
transform.rotation = Quaternion.identity;
}
}
}
Ball Children Collision (their parent is an empty gameobject)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class PlayerCollision : MonoBehaviour
{
private bool isRestart = false;
private bool camStop = false;
private bool playerStop = false;
private bool playerRotate = false;
public Transform[] childTransforms;
public Rigidbody2D rb;
public FollowPlayer follow;
private PlayerUp playerUp;
private PlayerRotator rotator;
void Start()
{
playerUp = GetComponent<PlayerUp>();
rotator = GetComponent<PlayerRotator>();
}
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.transform.tag == "Obstacle")
{
StopMoving();
Invoke("RestartLevel", 1.5f);
}
}
void StopMoving()
{
if (camStop == false)
{
camStop = true;
follow.enabled = false;
}
if (playerStop == false)
{
playerStop = true;
playerUp.enabled = false;
}
if (playerRotate == false)
{
playerRotate = true;
rotator.enabled = false;
}
}
void RestartLevel()
{
if (isRestart == false)
{
isRestart = true;
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
transform.rotation = Quaternion.identity;
}
}
}
Thanks in advance guys!!
Comment
Your answer
Follow this Question
Related Questions
Instance of a object error after player death 0 Answers
How to Destroy Copies made during levelload? 2 Answers
Object Disappearing when comes close to player. 1 Answer
Need Help on scripting football simulation game 0 Answers
Player Money not working 1 Answer