Advertisement
Guest User

Untitled

a guest
May 24th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class CharacterControllerScript : MonoBehaviour
  5. {
  6. //переменная для установки макс. скорости персонажа
  7. public float maxSpeed = 10f;
  8. //переменная для определения направления персонажа вправо/влево
  9. private bool isFacingRight = true;
  10. //ссылка на компонент анимаций
  11. private Animator anim;
  12.  
  13. /// <summary>
  14. /// Начальная инициализация
  15. /// </summary>
  16. private void Start()
  17. {
  18. anim = GetComponent<Animator>();
  19. }
  20.  
  21. /// <summary>
  22. /// Выполняем действия в методе FixedUpdate, т. к. в компоненте Animator персонажа
  23. /// выставлено значение Animate Physics = true и анимация синхронизируется с расчетами физики
  24. /// </summary>
  25. private void FixedUpdate()
  26. {
  27. //используем Input.GetAxis для оси Х. метод возвращает значение оси в пределах от -1 до 1.
  28. //при стандартных настройках проекта
  29. //-1 возвращается при нажатии на клавиатуре стрелки влево (или клавиши А),
  30. //1 возвращается при нажатии на клавиатуре стрелки вправо (или клавиши D)
  31. float move = Input.GetAxis("Horizontal");
  32.  
  33. //в компоненте анимаций изменяем значение параметра Speed на значение оси Х.
  34. //приэтом нам нужен модуль значения
  35. anim.SetFloat("Speed", Mathf.Abs(move));
  36.  
  37. //обращаемся к компоненту персонажа RigidBody2D. задаем ему скорость по оси Х,
  38. //равную значению оси Х умноженное на значение макс. скорости
  39. rigidbody2D.velocity = new Vector2(move * maxSpeed, rigidbody2D.velocity.y);
  40.  
  41. //если нажали клавишу для перемещения вправо, а персонаж направлен влево
  42. if(move > 0 && !isFacingRight)
  43. //отражаем персонажа вправо
  44. Flip();
  45. //обратная ситуация. отражаем персонажа влево
  46. else if (move < 0 && isFacingRight)
  47. Flip();
  48. }
  49.  
  50. /// <summary>
  51. /// Метод для смены направления движения персонажа и его зеркального отражения
  52. /// </summary>
  53. private void Flip()
  54. {
  55. //меняем направление движения персонажа
  56. isFacingRight = !isFacingRight;
  57. //получаем размеры персонажа
  58. Vector3 theScale = transform.localScale;
  59. //зеркально отражаем персонажа по оси Х
  60. theScale.x *= -1;
  61. //задаем новый размер персонажа, равный старому, но зеркально отраженный
  62. transform.localScale = theScale;
  63. }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement