Всем привет! Помогите пожалуйста! Уже неделю мучаюсь! Хочу сделать управление игроком в 2d игре для андроид платформы, что бы бегал вправо- лево, прыжок настроил остальное не могу, и еще подскажите как сделать что бы после окончания жизней (сердечек) появлялось окно с выбором вернуться в начало игры или посмотреть рекламу что бы добавилось "сердечко"! Зарание спасибо за помощь и понимание!
Вот скрипт!
Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class characterController : Unit {
private SpriteRenderer sprite;
public float speed = 3.5F;
public float jumpPower;
public int directionInput;
public bool groundCheck;
public bool facingRight = true;
private int lives = 5;
public int Lives
{
get { return lives; }
set
{
if (value < 5) lives = value;
livesBar.Refresh();
}
}
private LivesBar livesBar;
Rigidbody2D body;
private bool isGrounded = false;
public float force = 300.0f;
private int coinsInt = 0;
public Text coinsText;
// Use this for initialization
void Start ()
{
body = GetComponent<Rigidbody2D> ();
}
new private Rigidbody2D rigidbody;
private Animator animator;
private CharState State
{
get { return (CharState)animator.GetInteger("State"); }
set { animator.SetInteger("State", (int)value); }
}
private void Awake()
{
livesBar = FindObjectOfType<LivesBar>();
rigidbody = GetComponent<Rigidbody2D>();
animator = GetComponent<Animator>();
sprite = GetComponentInChildren<SpriteRenderer>();
}
// Update is called once per frame
private void FixedUpdate()
{
CheckGround ();
body.velocity = new Vector2(speed * directionInput, body.velocity.y);
}
void Update ()
{
coinsText.text = coinsInt.ToString();
if (isGrounded) State = CharState.Idle;
if (Input.GetButton("Horizontal")) Run();
if (isGrounded && Input.GetKeyDown (KeyCode.Space))
{
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, force));
}
groundCheck = true;
}
public override void ReceiveDamage()
{
Lives--;
rigidbody.velocity = Vector3.zero;
rigidbody.AddForce(transform.up * 8.0F, ForceMode2D.Impulse);
Debug.Log(lives);
}
private void CheckGround()
{
Collider2D[] colliders = Physics2D.OverlapCircleAll (transform.position, 1f);
isGrounded = colliders.Length > 1;
if (!isGrounded) State = CharState.Jump;
}
private void Run()
{
Vector3 direction = transform.right * Input.GetAxis("Horizontal");
transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);
sprite.flipX = direction.x < 0.0F;
if (isGrounded) State = CharState.Run;
}
public void Jump(bool isJump)
{
isJump = isGrounded;
if (isGrounded)
{
body.velocity = new Vector2(body.velocity.x, jumpPower);
}
}
void OnTriggerEnter2D(Collider2D col)
{
if ((col.gameObject.name == "dieCollider") || (col.gameObject.name == "Obstacle")) // получение урона от обьектов
{
ReceiveDamage ();
}
if (col.gameObject.tag == "hole") // возврат в начало уровня после падения
{
Application.LoadLevel (Application.loadedLevel);
}
if (col.gameObject.tag == "coins") // сбор монет
{
coinsInt++;
Destroy (col.gameObject);
}
if (col.gameObject.name == "endLevel") // переход на другой уровень
{
Application.LoadLevel ("Level1_Scena2");
}
}
}
public enum CharState
{
Idle,
Run,
Jump
}