У меня есть игровой объект под названием «Игрок», и моя карта состоит из коротких и длинных трав. Если мой игрок на высокой траве, я хочу, чтобы он замедлился. Еще одна проблема заключается в том, что в моей игре есть несколько игровых объектов с длинными травами. Вот скриншот из них:
https://imgur.com/hUq4baV
Вот как выглядит мой текущий код движения:
public class PlayerMovement : MonoBehaviour
{
public Sprite Up;
public Sprite Down;
public Sprite Right;
public Sprite Left;
public float speed;
private SpriteRenderer sr;
// Update is called once per frame
void Update()
{
Vector3 move;
if (Input.GetKey(KeyCode.W))
{
GetComponent<SpriteRenderer>().sprite = Up;
move = new Vector2(0, speed * Time.deltaTime);
transform.position += move;
}
if (Input.GetKey(KeyCode.A))
{
GetComponent<SpriteRenderer>().sprite = Left;
move = new Vector2(speed * Time.deltaTime, 0);
transform.position -= move;
}
if (Input.GetKey(KeyCode.D))
{
GetComponent<SpriteRenderer>().sprite = Right;
move = new Vector2(speed * Time.deltaTime, 0);
transform.position += move;
}
if (Input.GetKey(KeyCode.S))
{
GetComponent<SpriteRenderer>().sprite = Down;
move = new Vector2(0,speed * Time.deltaTime);
transform.position -= move;
}
}
}
// All my code does is that on each WASD, it changes to a different sprite and moves it.
Объяснение будет полезно, потому что яновичок в этом.