Есть ответ 👍

написать код на движение wasd

(В Unity)

35 баллов

205
216
Посмотреть ответы 3

Ответы на вопрос:


/givestaybuttinswasdinwalking

2006464
4,8(17 оценок)

using UnityEngine;

using System.Collections;

[RequireComponent(typeof(Rigidbody2D))]

public class Player2DControl : MonoBehaviour {

public enum ProjectAxis {onlyX = 0, xAndY = 1};

public ProjectAxis projectAxis = ProjectAxis.onlyX;

public float speed = 150;

public float addForce = 7;

public bool lookAtCursor;

public KeyCode leftButton = KeyCode.A;

public KeyCode rightButton = KeyCode.D;

public KeyCode upButton = KeyCode.W;

public KeyCode downButton = KeyCode.S;

public KeyCode addForceButton = KeyCode.Space;

public bool isFacingRight = true;

private Vector3 direction;

private float vertical;

private float horizontal;

private Rigidbody2D body;

private float rotationY;

private bool jump;

void Start ()  

{

 body = GetComponent<Rigidbody2D>();

 body.fixedAngle = true;

 if(projectAxis == ProjectAxis.xAndY)  

 {

  body.gravityScale = 0;

  body.drag = 10;

 }

}

void OnCollisionStay2D(Collision2D coll)  

{

 if(coll.transform.tag == "Ground")

 {

  body.drag = 10;

  jump = true;

 }

}

 

void OnCollisionExit2D(Collision2D coll)  

{

 if(coll.transform.tag == "Ground")

 {

  body.drag = 0;

  jump = false;

 }

}

 

void FixedUpdate()

{

 body.AddForce(direction * body.mass * speed);

 if(Mathf.Abs(body.velocity.x) > speed/100f)

 {

  body.velocity = new Vector2(Mathf.Sign(body.velocity.x) * speed/100f, body.velocity.y);

 }

 if(projectAxis == ProjectAxis.xAndY)

 {

  if(Mathf.Abs(body.velocity.y) > speed/100f)

  {

   body.velocity = new Vector2(body.velocity.x, Mathf.Sign(body.velocity.y) * speed/100f);

  }

 }

 else

 {

  if(Input.GetKey(addForceButton) && jump)

  {

   body.velocity = new Vector2(0, addForce);

  }

 }

}

void Flip()

{

 if(projectAxis == ProjectAxis.onlyX)

 {

  isFacingRight = !isFacingRight;

  Vector3 theScale = transform.localScale;

  theScale.x *= -1;

  transform.localScale = theScale;

 }

}

 

void Update ()  

{

 if(lookAtCursor)

 {

  Vector3 lookPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.transform.position.z));

  lookPos = lookPos - transform.position;

  float angle  = Mathf.Atan2(lookPos.y, lookPos.x) * Mathf.Rad2Deg;

  transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);

 }

 if(Input.GetKey(upButton)) vertical = 1;

 else if(Input.GetKey(downButton)) vertical = -1; else vertical = 0;

 if(Input.GetKey(leftButton)) horizontal = -1;

 else if(Input.GetKey(rightButton)) horizontal = 1; else horizontal = 0;

 if(projectAxis == ProjectAxis.onlyX)  

 {

  direction = new Vector2(horizontal, 0);  

 }

 else  

 {

  if(Input.GetKeyDown(addForceButton)) speed += addForce; else if(Input.GetKeyUp(addForceButton)) speed -= addForce;

  direction = new Vector2(horizontal, vertical);

 }

 if(horizontal > 0 && !isFacingRight) Flip(); else if(horizontal < 0 && isFacingRight) Flip();

}

ИЛИ

using UnityEngine;

using System.Collections;

public class Move : MonoBehaviour {

public GameObject player;

public int speedRotation = 3;

public int speed = 5;

public AnimationClip anima;

public int jumpSpeed = 50;

void Start () {  

 player = (GameObject)this.gameObject;  

 animation.AddClip(anima, "animCube");

 }

 void Update(){

if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))  

 {  

 player.transform.position += player.transform.forward * speed * Time.deltaTime;  

 animation.CrossFade("animCube");

 }  

if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))  

 {  

 player.transform.position -= player.transform.forward * speed * Time.deltaTime;  

 }  

if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))  

 {  

 player.transform.Rotate(Vector3.down * speedRotation);  

 }  

 if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))  

 {  

 player.transform.Rotate(Vector3.up * speedRotation);  

 }  

if (Input.GetKeyDown(KeyCode.Space))  

 {  

 player.transform.position += player.transform.up * jumpSpeed * Time.deltaTime;  

 }  

}

}

Объяснение:


; не стоит в конце первой строчки

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS