Код работает очень хорошо для перемещения твердого тела с помощью стрелок вправо и влево, но я не могу понять, какой смысл использовать maxVelocity и absVelX, я не знаю их функции в коде... когда я удаляю Оба они работают очень хорошо, но, похоже, мне понадобятся оба на продвинутом уровне игры. это курс от Линды под названием «Основное обучение Unity 2d от Джесси Фримена»
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
public float speed=10f;
public Vector2 maxVelocity=new Vector2(3,5);
public bool standing;
public float jetSpeed=15f;
// Update is called once per frame
void Update () {
//Force resetted each frame
var forceX = 0f;
var forceY = 0f;
var absVelX = Mathf.Abs (rigidbody2D.velocity.x);
var absVelY = Mathf.Abs (rigidbody2D.velocity.y);
if (Input.GetKey ("right")) {
if (absVelX < maxVelocity.x)
forceX = speed;
transform.localScale=new Vector3(1,1,1);//Sprite orignal pose
} else if (Input.GetKey ("left")) {
if (absVelX < maxVelocity.x)
forceX = -speed;
transform.localScale=new Vector3(-1,1,1);//Sprite reversal pose
}
rigidbody2D.AddForce(new Vector2(forceX,forceY));
}
}
Подробнее здесь: https://stackoverflow.com/questions/273 ... e-in-unity