Развитие игровой вспышки
Текущее время: Чт ноя 15, 2018 4:57 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Управление 2Д платформер на Юнити для Андроида
СообщениеДобавлено: Чт ноя 08, 2018 10:10 pm 
Не в сети

Зарегистрирован: Вт фев 25, 2014 3:06 pm
Сообщений: 44
Вот ссылка на вебинар, по которому нужно сделать платформер.https://www.youtube.com/watch?v=CAPVBTKk3Ww


Основная проблема, в управлении под андроид. Хотелось бы сделать стрелки в движении право и лево , но не получается.
Использовал плагин CN Control персонаж двигается, но нет анимации. Помогите.....

Реализация кнопок стрельбы и бега у меня работает.



Вот скрипт :


using UnityEngine;
using System.Collections;

public class Character : Unit
{
[SerializeField]
private int lives = 5;

public int Lives
{
get { return lives; }
set
{
if (value < 5) lives = value;
livesBar.Refresh();
}
}
private LivesBar livesBar;

[SerializeField]
private float speed = 3.0F;
[SerializeField]
private float jumpForce = 15.0F;

private bool isGrounded = false;

private Bullet bullet;

private CharState State
{
get { return (CharState)animator.GetInteger("State"); }
set { animator.SetInteger("State", (int)value); }
}

new private Rigidbody2D rigidbody;
private Animator animator;
private SpriteRenderer sprite;

private void Awake()
{
livesBar = FindObjectOfType<LivesBar>();
rigidbody = GetComponent<Rigidbody2D>();
animator = GetComponent<Animator>();
sprite = GetComponentInChildren<SpriteRenderer>();

bullet = Resources.Load<Bullet>("Bullet");
}

private void FixedUpdate()
{
CheckGround();
}

private void Update()
{
if (isGrounded) State = CharState.Idle;

if (Input.GetButtonDown("Fire1")) Shoot();
if (Input.GetButton("Horizontal")) Run();
if (isGrounded && Input.GetButtonDown("Jump")) 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;
}

private void Jump()
{
rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
}

private void Shoot()
{
Vector3 position = transform.position; position.y += 0.8F;
Bullet newBullet = Instantiate(bullet, position, bullet.transform.rotation) as Bullet;

newBullet.Parent = gameObject;
newBullet.Direction = newBullet.transform.right * (sprite.flipX ? -1.0F : 1.0F);
}

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, 0.3F);

isGrounded = colliders.Length > 1;

if (!isGrounded) State = CharState.Jump;
}

private void OnTriggerEnter2D(Collider2D collider)
{

Bullet bullet = collider.gameObject.GetComponent<Bullet>();
if (bullet && bullet.Parent != gameObject)
{
ReceiveDamage();
}
}
}


public enum CharState
{
Idle,
Run,
Jump
}


Вернуться наверх
 Профиль Отправить e-mail  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB