public void KillAlly() { stage = MOVE_STAGE.stop_kill_blue; headAnim.Play("head_nothing", -1, 0.0f); legAnim.Play("foot_notrun", -1, 0.0f); animator.Play("kill_blue", -1, 0.0f); }
void DieLie() { stage = MOVE_STAGE.stop_killed; headAnim.Play("head_nothing", -1, 0.0f); legAnim.Play("foot_notrun", -1, 0.0f); animator.Play("dead_lie", -1, 0.0f); GameController.Stop(); }
void Start() { transCam = GameObject.FindGameObjectWithTag("MainCamera").transform; posOriginal = transform.position; //vecMove = new Vector3(speedMove, 0); vecPos = new Vector3(posOriginal.x + transCam.position.x, 0f); stage = MOVE_STAGE.run; jumpLevel = 0; animator = body.GetComponent <Animator>(); rigid = GetComponent <Rigidbody2D>(); audio = GetComponent <AudioSource>(); }
void TouchWall() { stage = MOVE_STAGE.stop_fall; animator.Play("player_fall", -1, 0.0f); headAnim.Play("head_nothing", -1, 0.0f); legAnim.Play("foot_notrun", -1, 0.0f); GetComponent <Collider2D>().enabled = false; rigid.constraints = RigidbodyConstraints2D.None; GameController.Stop(); }
void OnCollisionEnter2D(Collision2D col) { if (col.gameObject.tag == "ally") { col.gameObject.GetComponent <Blue>().TakeDmg(); DieLie(); } else if (col.gameObject.tag == "ground") { if (stage != MOVE_STAGE.jump) { return; } // lấy vector pháp tuyến của bề mặt Vector3 normal = col.contacts[0].normal; //Debug.Log("normal: " + normal); // nếu vector pháp tuyến chỉ lên trên -> đáp đất if (normal.y > 0) { stage = MOVE_STAGE.run; animator.Play("run", -1, 0.0f); headAnim.Play("head_ready", -1, 0.0f); legAnim.Play("foot_ready", -1, 0.0f); jumpLevel = 0; // reset thoi gian phat am thanh audio.clip = clipStep1; audio.Play(); timer = stepTime; } if (normal.x < -0.5) // thêm if này mới toàn vẹn { audio.clip = clipBump; audio.Play(); rigid.velocity = new Vector3(-10.0f, 10.0f); TouchWall(); // rung camera ShakeCamera.Shake(); } } }
void OnCollisionExit2D(Collision2D col) { // rời khỏi cục gạch if (col.gameObject.tag == "ground" && stage == MOVE_STAGE.run) { Vector3 normal = col.contacts[0].normal; // rớt thẳng xuống (chứ không phải tuột trên bề mặt dốc) if (normal.x == 0f) { stage = MOVE_STAGE.jump; jumpLevel = 1; TrulyJump(); } } }
public void Jump() { if (stage == MOVE_STAGE.run) { jumpLevel = 1; stage = MOVE_STAGE.jump; rigid.velocity = new Vector3(0.0f, jumpForce); TrulyJump(); } else if ((stage == MOVE_STAGE.jump) && (jumpLevel == 1)) { jumpLevel = 2; rigid.velocity = new Vector3(0.0f, jumpForce); TrulyJump(); } }
public void Reset() { gameObject.SetActive(true); stage = MOVE_STAGE.run; jumpLevel = 0; animator.Play("run", -1, 0.0f); headAnim.Play("head_ready", -1, 0.0f); legAnim.Play("foot_ready", -1, 0.0f); transform.position = new Vector3(-4.25f, -2.8f); transform.rotation = new Quaternion(0, 0, 0, 0); transform.localScale = Vector3.one; rigid.constraints = RigidbodyConstraints2D.FreezePositionX | RigidbodyConstraints2D.FreezeRotation; //foreach(Transform child in transform) //{ // // lâu lâu lỗi rotation, dùng cái này fix (thực ra ko biết đúng ko) // //child.localRotation = Quaternion.identity; // //child.localRotation = new Quaternion(0f, 0f, 0f, 0f); // child.rotation = new Quaternion(0f, 0f, 0f, 0f); //} for (int i = 0; i < transform.childCount; i++) { transform.GetChild(i).rotation = new Quaternion(0f, 0f, 0f, 0f); } rigid.velocity = Vector3.zero; rigid.gravityScale = 10f; GetComponent <Collider2D>().enabled = true; transform.position = posOriginal; }