2016-03-07 4 views
-3

Итак, мой код работает нормально. Все от анимации до гравитации до движущихся работ, за исключением прыжков. Я не могу видеть, что это неправильно в моем коде, который не позволил бы прыжки работать и вот код:Мой персонаж не прыгнет. (Unity2D C#)

using UnityEngine; 
using System.Collections; 
using System; 

public class CharacterRun : MonoBehaviour 
{ 

    public float MaxSpeed = 10; 
    bool FacingRight = true; 
    Animator anim; 
    bool grounded = false; 
    public Transform groundCheck; 
    float groundRadius = 0.2f; 
    public LayerMask whatIsGround; 
    public float jumpForce = 700f; 

    // Use this for initialization 
    void Start() 
    { 
     anim = GetComponent<Animator>(); 
    } 

    // Update is called once per frame 
    void FixedUpdate() 
    { 
     grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround); 
     anim.SetBool("Ground", grounded); 
     anim.SetFloat("vSpeed", GetComponent<Rigidbody2D>().velocity.y); 

     float move = Input.GetAxis("Horizontal"); 

     anim.SetFloat("hSpeed", Mathf.Abs(move)); 

     GetComponent<Rigidbody2D>().velocity = new Vector2(move * MaxSpeed, GetComponent<Rigidbody2D>().velocity.y); 
     GetComponent<Rigidbody2D>().constraints = RigidbodyConstraints2D.FreezeRotation; 

     if (move > 0 && !FacingRight) 
      Flip(); 
     else if (move < 0 && FacingRight) 
      Flip(); 
    } 

    private void SetFloat(string v1, float v2) 
    { 

    } 
    void update() 
    { 
     if (grounded && Input.GetKeyDown(KeyCode.Space)) 
     { 
      anim.SetBool("Ground", false); 
      GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse); 
     } 

    } 
    void Flip() 
    { 
     FacingRight = !FacingRight; 
     Vector3 theScale = transform.localScale; 
     theScale.x *= -1; 
     transform.localScale = theScale; 
    } 
} 
+0

Мой персонаж все еще может переворачиваться, хотя перемещение = 0. И почему перевертывание и прыжки будут одинаковыми? Я что-то ввернул в код? – AlanOmari

+0

По внешнему виду вы вызываете 'Flip()' только из операторов if, т. Е. 'Move> 0 || переместите <0', поэтому ваш персонаж не будет 'Flip', если' move = 0' – TheLethalCoder

ответ

6

Потому что вам нужно назвать функцию Update не обновлять.

void Update() /// Not update 
{ 
     if (grounded && Input.GetKeyDown(KeyCode.Space)) 
     { 
      anim.SetBool("Ground", false); 
      GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse); 
     } 
    } 
+1

О, боже, я не могу поверить, что я действительно пропустил это. Спасибо чувак. – AlanOmari

Смежные вопросы