مشکل در عمکلرد بازی برای نشستن و دویدن

geddis

عضویت : 1398/07/17 پرسش ها : 7 پاسخ ها : 5

مشکل در عمکلرد بازی برای نشستن و دویدن

ارسال شده در : ‫۲۷ روز قبل، چهار شنبه ۱۴ اسفند ۱۳۹۸، ساعت ۰۰:۴۰

سلام استاد زمانی که کد رو سیو می کنم این ارور رو میده NullReferenceException: Object reference not set to an instance of an object
UnityEditor.Graphs.AnimatorControllerTool.GetNodesRect (System.Collections.Generic.List`1[T] nodes) (at <e59e66ee6f1d40ec9e053a24d3b3b4a6>:0)
UnityEditor.Graphs.AnimatorControllerTool.FrameNodes (System.Collections.Generic.List`1[T] nodes, System.Single maximumZoom) (at <e59e66ee6f1d40ec9e053a24d3b3b4a6>:0) ولی وقتی پلی می کنم بازی رو ، ارورحذف می شه ولی توی بازی وقتی F رو می زنم نمی شینه مجبورم فشار بدن که یهویی میره زیر زمین همچنین اگر بخوام Q رو بزنم و بدوم کار نمی کنه مشکلش کجاست ممنونم می شم راهنماییم کنید . (مرحله ششم)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class control : MonoBehaviour {   
    private Transform firstPerson_View;
    private Transform firstPerson_camera;
    private Vector3 firstPerson_View_Rotation = Vector3.zero;
    public float walkSpeed = 8f;
    public float runSpeed = 12f;
    public float crouchSpeed = 5f;
    public float jumpSpeed = 9f;
    public float gravitySpeed = 10f;
    private float speed;
    private bool is_Moving, is_Grounded, is_crouching; 
    private float inputX, inputY; 
    private float inputX_Set, inputY_Set;
    private float inputModifyFactor;
    private bool limitDiagonaSpeed = true;
    private float antiBumpFactor = 0.75f;
    private CharacterController charController;
    private Vector3 moveDirection = Vector3.zero;
    public LayerMask groundLayer;
    private float rayDistance;
    private float default_ControllerHeight;
    private Vector3 default_CamPos;
    private float camHeight;
    private animation PlayerAnimation;
    // Start is called before the first frame update
    void Start() {
        firstPerson_View = transform.Find ("FPS View").transform;
        charController = GetComponent<CharacterController> ();
        speed = walkSpeed;
        is_Moving = false;
        rayDistance = charController.height * 0.5f + charController.radius;
        default_ControllerHeight = charController.height;
        default_CamPos = firstPerson_View.localPosition;
        PlayerAnimation = GetComponent<animation> ();
    }

    // Update is called once per frame
    void Update()
    {   PlayerMovement();
        
    }
    void PlayerMovement() {
        PlaryerCroughingAndSprinting();
        if (Input.GetKey (KeyCode.W) || Input.GetKey (KeyCode.S)) {
            if (Input.GetKey (KeyCode.W)) {
                inputY_Set = 1f;
            } else {
                inputY_Set = -1f;
            }
        } else {
            inputY_Set = 0f;
    }
            
        if (Input.GetKey (KeyCode.A) || Input.GetKey (KeyCode.D)) {
            if (Input.GetKey (KeyCode.A)) {
                inputX_Set = -1f;
            } else {
                inputX_Set = 1f;
            }
        } else {
            inputX_Set = 0f;
        }

        inputY = Mathf.Lerp (inputY, inputY_Set, Time.deltaTime * 19f);
        inputX = Mathf.Lerp (inputX, inputX_Set, Time.deltaTime * 19f);

        inputModifyFactor = Mathf.Lerp (inputModifyFactor,
            (inputY_Set != 0 && inputX_Set != 0 && limitDiagonaSpeed) ? 0.75f : 1.0f,Time.deltaTime * 19f);

        firstPerson_View_Rotation = Vector3.Lerp (firstPerson_View_Rotation, Vector3.zero, Time.deltaTime * 5f);
        firstPerson_View.localEulerAngles = firstPerson_View_Rotation;

        if (is_Grounded) {
            moveDirection = new Vector3 (inputX * inputModifyFactor, -antiBumpFactor, inputY * inputModifyFactor);

            moveDirection = transform.TransformDirection (moveDirection) * speed;
        PlayerJump();
        }

        moveDirection.y -= gravitySpeed * Time.deltaTime;

        is_Grounded = (charController.Move(moveDirection * Time.deltaTime) & CollisionFlags.Below) != 0;
        is_Moving = charController.velocity.magnitude > 0.15f;
        HandleAnimations ();        
    } 
    void PlaryerCroughingAndSprinting() {
        if (Input.GetKeyDown (KeyCode.F)) {
            if (!is_crouching) {
                is_crouching = true;
            } else {
                if(cangetup ()) {
                    is_crouching = false;
                }
            StopCoroutine (MoveCameraCrouch());
            StartCoroutine (MoveCameraCrouch());
            }
        if (is_crouching) {
            speed = crouchSpeed;
        } else {
            if (Input.GetKey (KeyCode.E)) {
                speed = runSpeed;
            } else {
                speed = walkSpeed;
            }
            
        }
        }
    }

    bool cangetup() {
        Ray groundRay = new Ray (transform.position, transform.up);
        RaycastHit groundHit;
        if(Physics.SphereCast (groundRay, charController.radius + 0.5f, out groundHit, rayDistance, groundLayer)) {
            if(Vector3.Distance(transform.position, groundHit.point) < 2.3f) {
                return false;

            }


        }

        return false;
    }
    IEnumerator MoveCameraCrouch() {
        charController.height = is_crouching ? default_ControllerHeight / 1.5f : default_ControllerHeight;
        charController.center = new Vector3 (0f, charController.height / 2f, 0f);
        camHeight = is_crouching ? default_CamPos.y / 1.5f : default_CamPos.y;
        while (Mathf.Abs (camHeight - firstPerson_View.localPosition.y) > 0.1f)
        {
           firstPerson_View.localPosition = Vector3.Lerp (firstPerson_View.localPosition, new Vector3(default_CamPos.x, camHeight, default_CamPos.z), Time.deltaTime * 11f );
           yield return null;
        }
    }

    void PlayerJump() {
        if (Input.GetKeyDown (KeyCode.Q)) {
            if (is_crouching) {
                if (cangetup ()) {
                    is_crouching = false;

                    StopCoroutine (MoveCameraCrouch());
                    StartCoroutine (MoveCameraCrouch());

                }

            } else {
                moveDirection.y = jumpSpeed;
                
            }
        }
    }
    void HandleAnimations() {
        PlayerAnimation.Movement (charController.velocity.magnitude);
        PlayerAnimation.PlayerJump (charController.velocity.y);
    }
}

 

شاهین محمدپور

عضویت : 1397/02/01 پرسش ها : 0 پاسخ ها : 65

(پاسخ صحیح)

ارسال شده در :‫۲۷ روز قبل، چهار شنبه ۱۴ اسفند ۱۳۹۸، ساعت ۱۰:۴۰

سلام دوست من ایرادت از مقدار دهیه روی ارورت کلیک کن میبرتت روی خطی که ارور هست حتی شماره ی خطی که ارور میدو رو هم مینویسه جلوش توی پرانتز 
روی ارور کلیک کن اون خطی که نشونت داد رو کپی کن بفرست تا بفهمم چی ایراد میده.

1 تشکر

geddis

عضویت : 1398/07/17 پرسش ها : 7 پاسخ ها : 5
ارسال شده در :‫۲۶ روز قبل، چهار شنبه ۱۴ اسفند ۱۳۹۸، ساعت ۱۶:۱۶

استاد نمی شود اروره دیگه نمیاد ولی وقتی بود خط کد رو ننوشته بود همینی که بالا نوشتم بود مرحله ششم رو هم نجام دادم ولی بازم نشستن  درستکار نمی کنه و دیویدن که اصلا کار نمی کنه

فکر کنم ایراد از کده ولی هر چقدر که می گردم نمی تونم دلیلش رو پیدا کنم.

1 تشکر

شاهین محمدپور

عضویت : 1397/02/01 پرسش ها : 0 پاسخ ها : 65
ارسال شده در :‫۲۶ روز قبل، چهار شنبه ۱۴ اسفند ۱۳۹۸، ساعت ۲۱:۴۸

دوست من توی تلگرام بهم پیام بده جمعه با anydesk بیام ببینم مشگل کجاست این شمارمه 09375822122

1 تشکر

برای ارسال پاسخ باید وارد شوید و یا در سایت عضو شوید