Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WASD : MonoBehaviour {
public float speed;
public Rigidbody2D rgb2d;
public bool jump;
public float Jspeed;
void Start () {
rgb2d = GetComponent<Rigidbody2D> ();
}
void OnCollisionStay2D(Collision2D coll){
if (coll.transform.tag == "ground"){
jump = true;
}
}
void OnCollisionExit2D(Collision2D coll){
if (coll.transform.tag == "ground"){
jump = false;
}
}
void Update () {
if (Input.GetKey (KeyCode.A)) {
transform.Translate (-speed*Time.deltaTime, 0, 0);
}
if (Input.GetKey (KeyCode.D)) {
transform.Translate (speed*Time.deltaTime, 0, 0);
}
if ((Input.GetKey (KeyCode.W) || Input.GetKey (KeyCode.Space)) && jump) {
rgb2d.AddForce (new Vector3(0, Jspeed, 0), ForceMode2D.Impulse);
}
}
}
using System.Collections.Generic;
using UnityEngine;
public class WASD : MonoBehaviour {
public float speed;
public Rigidbody2D rgb2d;
public bool jump;
public float Jspeed;
void Start () {
rgb2d = GetComponent<Rigidbody2D> ();
}
void OnCollisionStay2D(Collision2D coll){
if (coll.transform.tag == "ground"){
jump = true;
}
}
void OnCollisionExit2D(Collision2D coll){
if (coll.transform.tag == "ground"){
jump = false;
}
}
void Update () {
if (Input.GetKey (KeyCode.A)) {
transform.Translate (-speed*Time.deltaTime, 0, 0);
}
if (Input.GetKey (KeyCode.D)) {
transform.Translate (speed*Time.deltaTime, 0, 0);
}
if ((Input.GetKey (KeyCode.W) || Input.GetKey (KeyCode.Space)) && jump) {
rgb2d.AddForce (new Vector3(0, Jspeed, 0), ForceMode2D.Impulse);
}
}
}
настройки:
Скрытый текст:
Собственно проблема в том , что появилась распрыжка: обычно персонаж прыгает на определенную высоту, однако если зажать пробел на месте , то прыгать он будет выше.
Как убрать и из-за чего это возникает?
https://vk.com/video132513584_456239062