Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by Numonic · Feb 13, 2018 at 07:18 PM · programmingcharacter movement

Help with player movement.

I seem to be getting some odd error in my movement script. It was working originally today and all of a sudden this error came about. Player movement derived from Sebastian lague I'm not sure what to do next all seems correct in his script it's a bit beyond me at the moment any help would be great.

error is from the TurtleMovement() method.

https://www.youtube.com/watch?v=ZwD1UHNCzOc&t=929s

error is on line 457 Assertion failed on expression: 'CompareApproximately(SqrMagnitude(result), 1.0F)' UnityEngine.Transform:set_eulerAngles(Vector3) PlayerController:TurtleMovement() (at Assets/Scripts/PlayerController.cs:457) PlayerController:Update() (at Assets/Scripts/PlayerController.cs:176)

and error on line 466

transform.position assign attempt for 'Leonardo' is not valid. Input position is { NaN, NaN, NaN }. UnityEngine.Transform:Translate(Vector3, Space) PlayerController:TurtleMovement() (at Assets/Scripts/PlayerController.cs:466)

 using System.Collections;
 using System.Collections.Generic;
 
 using UnityEngine;
 
 public class PlayerController : MonoBehaviour {
 
     public LeonardoAttackTrailScript leoTrailAttack;
     PlayerController playerController;
     public Vector3 respawnPosition;
     public Renderer rend;
     public  Rigidbody rigidBody;
     public AudioSource leokick;
     public AudioSource metalHitSound;
     public AudioSource footPunchSound;
     public AudioSource explosionSound;
     public AudioSource shellShock;
     public AudioSource electricshock;
     public AudioSource death;
     public AudioSource attackSound;
     public GameObject lKatanaAttackBox, rKatanaAttackBox, lFootAttackBox, rFootAttackBox; //player attackboxes
     //public AudioSource leoJump;
 
 
     private TenticleShock tenticleShock;
     private GameObject roadKillRodneyPrefab;
 
     private FootDoDamage footdoDamage;
     public BallSpawn ballSpawn;
     public GameManager gameManager;
     public CharacterStats characterStats;
     public CameraFollow cameraFollow;
 
 
     [Header("Player Settings")]
     public float walkSpeed =2;
     public float runSpeed =6;
     public float gravity = -12f;
     public float jumpHeight = 1f;
     public int attknumber;
     public bool canJump;
     Animator anim;
 
 
     [Range(0,1)]
     public float airControlPercent;
     private CharacterController controller;
 
     
     public float turnSmoothTime = 0.2f;
     float turnSmoothVelocity;
 
     public float speedSmoothTime = 0.1f;
     float speedSmoothVelocity;
     float currentSpeed;
     float velocityY;
 
 
     // Use this for initialization
     void Awake()
     {
         if(cameraFollow ==null)
         {
             cameraFollow = GameObject.Find("MainCamera").GetComponent<CameraFollow>();
 
         }
         respawnPosition = transform.position;
     
         if(rend ==null)
         {
             rend = GameObject.Find("Leonardo").GetComponent<Renderer>();//originally "Leonardo
 
         }
 
         if (electricshock ==null)
         {
             electricshock = GameObject.Find("electricshock").GetComponent<AudioSource>();
         }
         if (death == null)
         {
             death = GameObject.Find("death").GetComponent<AudioSource>();
         }
 
         if (metalHitSound == null)
         {
             metalHitSound = explosionSound = GameObject.Find("metalhit").GetComponent<AudioSource>();
 
         }
 
         if (explosionSound == null)
         {
             explosionSound = GameObject.Find("explosion").GetComponent<AudioSource>();
         }
 
 
             if (tenticleShock != null)
             {
                 tenticleShock = GameObject.Find("RoadKillRodney").GetComponent<TenticleShock>();
 
             }
 
 
       
 
 
         if (rigidBody ==null)
         {
             rigidBody = GetComponent<Rigidbody>();
 
         }
 
         if (ballSpawn == null)
         {
             ballSpawn = GetComponent<BallSpawn>();
         }
 
 
         if (footdoDamage ==null)
         {
             footdoDamage = GetComponent<FootDoDamage>();
 
         }
 
 
         if(characterStats == null)
         {
             characterStats = GetComponent<CharacterStats>();
 
         }
 
         if (gameManager ==null)
         {
             gameManager = GetComponent<GameManager>();
 
         }
 
 
         playerController = GetComponent<PlayerController>();
         //int atkRange = Random.Range(1, 5);
         // anim.SetInteger("Atk", atkRange);
         attknumber = Random.Range(0,4);
 
         if (leokick == null)
         {
             leokick = GetComponent<AudioSource>();
 
         }
 
         if (leoTrailAttack == null)
         {
             leoTrailAttack = GetComponent<LeonardoAttackTrailScript>();
 
         }
 
         if (controller == null)
         {
             controller = GetComponent<CharacterController>();
         }
 
         anim = GetComponent<Animator>();
 
         if (attackSound == null)
         attackSound = GetComponent<AudioSource>();
 
         if(shellShock ==null)
         shellShock = GetComponent<AudioSource>();
 
         if(leokick == null)
         leokick = GetComponent<AudioSource>();
     }
     
     // Update is called once per frame
     void Update ()
     {
 
         TurtleMovement();
         Attack();
         Jump();
         JumpKick();
         SpecialAttack();
 
 
 
         //StartCoroutine(AttackSound());
     }
     void OnTriggerStay(Collider other)
     {
        
 
 
     }
  
     IEnumerator StunWhileHit()
     {
         controller.enabled = false; //Disable character when hit for two seconds
         playerController.enabled = false;//Disable character when hit for two seconds
         anim.SetBool("hit", true);
         yield return new WaitForSeconds(.3f);
         anim.SetBool("hit", false);
         controller.enabled = true; //Enable Character after it has been disabled.
         playerController.enabled = true; //Enable Character after it has been disabled.
         print("Leo is stunned while being hit.");
     }
 
     void OnTriggerEnter(Collider other)
     {
         if (other.tag == "lfistattack" || other.tag == "rfootattack")
         {
             characterStats.leoHealthSlider.value = characterStats.healthLeo;
 
             // footdoDamage.footPunchSound.Play();
             footPunchSound.Play();
             characterStats.healthLeo -= characterStats.damageTakenLeo;
             anim.SetBool("hit", true);
 
             print("laser hit us.");
            // StartCoroutine(StunWhileHit());
             print("we are getting hit by the foot.");
             if (characterStats.healthLeo <=0) 
             {
 
                 //StopAllCoroutines();
                 playerController.LeonardoDeath(); // Calling death method
                 characterStats.LeoLives(); // take away a life every death
                 StartCoroutine(LeoRespawnRoutine());
                 print("Running LeoRespawnRoutine we have just died.");
             }
         }
         else
         {
             anim.SetBool("hit", false);
             anim.SetBool("idle", true);
         }
 
 
 
         if (other.tag =="rodneylaser")
         {
             characterStats.leoHealthSlider.value = characterStats.healthLeo;
             characterStats.healthLeo -= characterStats.rodneyTenticleDamage;
             //tenticleShock.AttackBoxOn();
             anim.SetBool("tenticleattack", true);
             anim.SetBool("idle", false);
 
             if (characterStats.healthLeo <= 0)
             {
                 playerController.LeonardoDeath(); // Calling death method
                 characterStats.LeoLives(); // take away a life every death
                 controller.enabled = false;
                 playerController.enabled = false;
                StartCoroutine(LeoRespawnRoutine());
 
                 print("we are dead.");
             }
            
         }
         
         if(other.tag == "rodneywhip")
         {
             characterStats.leoHealthSlider.value = characterStats.healthLeo;
             characterStats.healthLeo -= characterStats.rodneyTenticleDamage;
             anim.SetBool("tenticleattack", true);
             anim.SetBool("idle", false);
             print("hit with RodneyWhip.");
             if (characterStats.healthLeo <= 0)
             {
                 //RodneyStops attack once dead.
                 anim.SetBool("tenticleattack", false);
                 anim.SetBool("idle", true);
                 //RodneyStops attack once dead.
 
                 playerController.LeonardoDeath(); // Calling death method
                 characterStats.LeoLives(); // take away a life every death
                 controller.enabled = false;
                 playerController.enabled = false;
                 StartCoroutine(LeoRespawnRoutine());
 
                 print("we are dead.");
             }
         }
 
        
         if (other.tag == "metalball")
         {
             //rigidBody.velocity = new Vector3(-70f, 60f, 0f);
             characterStats.healthLeo -= ballSpawn.damageToGive;  // Removes 100 from life bar instant death
             characterStats.lifeLeo -= 1; //Removes a life from the lives
             characterStats.leoLife.text = "x " + characterStats.lifeLeo.ToString(); //converts the string to a int showing remaining lives
             characterStats.leoHealthSlider.value = characterStats.healthLeo; //shows life bar going to zero
             playerController.LeonardoDeath(); // Calling death method
 
             StartCoroutine(LeoRespawnRoutine());
 
 
             print("MetalBall hit us Instant death.");
         }
 
         if(other.tag == "pizza")
         {
             characterStats.AddHealth();
             //print("we have gotten some pizza");
         }
 
         if(other.tag == "rocksteadybullet")
         {
             print("RockSteadyBullets are hitting us.");
         }
 
 
         ////RockSteadyAttack
         if (other.tag == "tackle" || other.tag == "rocksteadykick")
         {
             characterStats.leoHealthSlider.value = characterStats.healthLeo;
 
             // footdoDamage.footPunchSound.Play();
             footPunchSound.Play();
             characterStats.healthLeo -= characterStats.damageTakenLeo;
             anim.SetBool("hit", true);
 
             print("laser hit us.");
             // StartCoroutine(StunWhileHit());
             print("we are getting hit by the foot.");
             if (characterStats.healthLeo <= 0)
             {
 
                 //StopAllCoroutines();
                 playerController.LeonardoDeath(); // Calling death method
                 characterStats.LeoLives(); // take away a life every death
                 StartCoroutine(LeoRespawnRoutine());
                 print("Running LeoRespawnRoutine we have just died.");
             }
         }
         else
         {
             anim.SetBool("hit", false);
             anim.SetBool("idle", true);
         }
 
     }
 
   
 
 
     void OnTriggerExit(Collider other)
     {
         if (other.tag == "lfistattack" || other.tag == "rfootattack")
         {
             anim.SetBool("hit", false);
 
         }
     }
 
     public void LeonardoDeath()
     {
         shellShock.Play();
         death.Play();
         anim.SetTrigger("shellshock");
         controller.enabled = false;
         playerController.enabled = false;
     }
 
 
     public void RespawnPlayer()
     {
         characterStats.leoHealthSlider.value = characterStats.healthLeo;
         characterStats.healthLeo = 100;
         //characterStats.LeoLives();
         transform.position = respawnPosition;
         controller.enabled = true;
         playerController.enabled = true;
         anim.SetTrigger("wearerespawned");
     }
     
   IEnumerator LeoRespawnRoutine()
     {
         yield return new WaitForSeconds(1f);
         RespawnPlayer();
         print("Running LeoRespawnRoutine()");
 
     }
 
     
 
     public void JumpKick()
     {
         // character must be already in jumping then press the 3 button to perform jumpkick
        if(!controller.isGrounded && Input.GetKeyDown(KeyCode.Joystick1Button2))
         {
             leoTrailAttack.rend.enabled = true;
             anim.SetBool("jumpkick", true);
             anim.SetBool("kick",false);
             
             lFootAttackBox.gameObject.SetActive(true);
             lKatanaAttackBox.gameObject.SetActive(true);
             rKatanaAttackBox.gameObject.SetActive(true);
             
             print("Performing JumpKick.");
         }
 
         if (Input.GetKeyUp(KeyCode.Joystick1Button2))
         {
             
             lFootAttackBox.gameObject.SetActive(false);
             lKatanaAttackBox.gameObject.SetActive(false);
             rKatanaAttackBox.gameObject.SetActive(false);
            
 
         }
         //KeyBoard Controller
         // character must be already in jumping then press the 3 button to perform jumpkick
         if (!controller.isGrounded && Input.GetKeyDown(KeyCode.K))
         {
             leoTrailAttack.rend.enabled = true;
             anim.SetBool("jumpkick", true);
             anim.SetBool("kick", false);
 
             lFootAttackBox.gameObject.SetActive(true);
             lKatanaAttackBox.gameObject.SetActive(true);
             rKatanaAttackBox.gameObject.SetActive(true);
 
             print("Performing JumpKick.");
         }
 
         if (Input.GetKeyUp(KeyCode.K))
         {
 
             lFootAttackBox.gameObject.SetActive(false);
             lKatanaAttackBox.gameObject.SetActive(false);
             rKatanaAttackBox.gameObject.SetActive(false);
 
 
         }
 
 
 
     }
 
     IEnumerator AttackSound()
     {
         yield return new WaitForSeconds(0.5f);
         attackSound.Play();
         print("Running Attack Coroutine.");
     }
 
 
     public void TurtleMovement()
     {
         Vector2 input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
         Vector2 inputDir = input.normalized;
 
 
  
         //keeps from character snapping after turning
         if (inputDir != Vector2.zero)
         {
             float targetRotation = Mathf.Atan2(inputDir.x, inputDir.y) * Mathf.Rad2Deg;
             transform.eulerAngles = Vector3.up * Mathf.SmoothDampAngle(transform.eulerAngles.y, targetRotation, ref turnSmoothVelocity, turnSmoothTime);
         }
 
         
         bool running = (Input.GetKey(KeyCode.Joystick1Button0));
         float targetSpeed = ((running) ? runSpeed : walkSpeed) * inputDir.magnitude;
         currentSpeed = Mathf.SmoothDamp(currentSpeed, targetSpeed, ref speedSmoothVelocity, speedSmoothTime);
 
         //Moves forward
         transform.Translate(transform.forward *currentSpeed * Time.deltaTime, Space.World);
 
         float animationSpeedPercent = ((running) ? 1 : .5f) * inputDir.magnitude;
         anim.SetFloat("speedPercent", animationSpeedPercent, speedSmoothTime, Time.deltaTime);
 
 
 
         //Gravity
         velocityY += Time.deltaTime * gravity;
         Vector3 velocity = transform.forward * currentSpeed + Vector3.up * velocityY;
 
 
         controller.Move(velocity * Time.deltaTime);
         currentSpeed = new Vector2(controller.velocity.x, controller.velocity.z).magnitude;
 
         
             if (controller.isGrounded)
             {
                 velocityY = 0;
             }
            
   
 
 
 
         /*
        // when player is walking attack is disabled experimenting with this myself
         if(running == true && currentSpeed > 1f)
         {
             CancelInvoke("Attack");
             CancelInvoke("SpecialAttack");
             print("we are canceling attacks when walking.");
         }
         */
 
 
 
             // Character Running
             /* Turning off for now
             if ((Input.GetKeyDown(KeyCode.Joystick1Button0)))
             {
                 anim.SetBool("run", true);
                 anim.SetBool("idle", false);
                 print("We are pressing Button1  we are running");
             }
             if ((Input.GetKeyUp(KeyCode.Joystick1Button0)))
             {
                 anim.SetBool("idle", true);
                 anim.SetBool("run", false);
                 //print("We are pressing Button1  we are running");
             }
            */
 
     }
 
     public void Attack()
     {
         if(Input.GetKeyDown(KeyCode.Joystick1Button2))
         {
             leokick.Play();
 
             leoTrailAttack.rend.enabled = true;
             anim.SetBool("kick" ,true);
          
             rFootAttackBox.gameObject.SetActive(true);
             lKatanaAttackBox.gameObject.SetActive(true);
             rKatanaAttackBox.gameObject.SetActive(true);
             //anim.SetInteger("attknumber", attknumber);
             anim.SetBool("idle", false);
         }
      
         
         if (Input.GetKeyUp(KeyCode.Joystick1Button2))
         {
             leoTrailAttack.rend.enabled = false;
             //anim.SetInteger("attknumber", attknumber);
 
             anim.SetBool("kick", false);
             //weapon attack Hiding
             lKatanaAttackBox.gameObject.SetActive(false);
             rKatanaAttackBox.gameObject.SetActive(false);
             rFootAttackBox.gameObject.SetActive(false);
 
             anim.SetBool("idle", true);
         }
         //KeyBoard Controller
         if (Input.GetKeyDown(KeyCode.K))
         {
             leokick.Play();
 
             leoTrailAttack.rend.enabled = true;
             anim.SetBool("kick", true);
 
             rFootAttackBox.gameObject.SetActive(true);
             lKatanaAttackBox.gameObject.SetActive(true);
             rKatanaAttackBox.gameObject.SetActive(true);
             //anim.SetInteger("attknumber", attknumber);
             anim.SetBool("idle", false);
         }
 
 
         if (Input.GetKeyUp(KeyCode.K))
         {
             leoTrailAttack.rend.enabled = false;
             //anim.SetInteger("attknumber", attknumber);
 
             anim.SetBool("kick", false);
             //weapon attack Hiding
             lKatanaAttackBox.gameObject.SetActive(false);
             rKatanaAttackBox.gameObject.SetActive(false);
             rFootAttackBox.gameObject.SetActive(false);
 
             anim.SetBool("idle", true);
         }
 
 
     }
     public void SpecialAttack()
     {
         if(Input.GetKeyDown(KeyCode.Joystick1Button2) && (Input.GetKey(KeyCode.Joystick1Button1)))
             {
         
               CancelInvoke("jump");
               anim.SetBool("jump", false);
               canJump = false;
 
             print("we are pressing both buttons at the same time.");
             }
         else
         {
             anim.SetBool("idle", true);
             canJump = true;
 
 
         }
         //KeyBoard
         if (Input.GetKeyDown(KeyCode.K) && (Input.GetKey(KeyCode.J)))
         {
 
             CancelInvoke("jump");
             anim.SetBool("jump", false);
             canJump = false;
 
             print("we are pressing both buttons at the same time.");
         }
         else
         {
             anim.SetBool("idle", true);
             canJump = true;
 
 
         }
     }
 
 
     public void Jump()
    {
         if (Input.GetKey(KeyCode.Joystick1Button1))
         {
             //cameraFollow.enabled = false;//Turning off camera follow
             if(controller.isGrounded && canJump ==true )
             {
                 //leoJump.Play();
                 anim.SetBool("jump", true);
                 float jumpVelocity = Mathf.Sqrt(-2 * gravity * jumpHeight);
                 velocityY = jumpVelocity;
 
                 //print("We are Jumping");
             }
         }
 
 
         if (Input.GetKeyUp(KeyCode.Joystick1Button1))
         {
             //cameraFollow.enabled = false;//Turning off camera follow
 
             anim.SetBool("jump", false);
             anim.SetBool("idle", true);
 
         }
         // KeyBoard Jump
         if (Input.GetKey(KeyCode.Space))
         {
             //cameraFollow.enabled = false;//Turning off camera follow
             if (controller.isGrounded && canJump == true)
             {
                 //leoJump.Play();
                 anim.SetBool("jump", true);
                 float jumpVelocity = Mathf.Sqrt(-2 * gravity * jumpHeight);
                 velocityY = jumpVelocity;
 
                 //print("We are Jumping");
             }
         }
 
 
         if (Input.GetKeyUp(KeyCode.Space))
         {
             //cameraFollow.enabled = false;//Turning off camera follow
 
             anim.SetBool("jump", false);
             anim.SetBool("idle", true);
 
         }
 
     }
 
     //This lets you control the character when in air via a rangeslider put in a public float further up.
     float GetModifiedSmoothTime(float smoothTime)
     {
         if(controller.isGrounded)
         {
             return smoothTime;
         }
 
         if(airControlPercent == 0)
         {
             return float.MaxValue;
         }
         return smoothTime / airControlPercent;
     }
 
   
 
     
 
 
 
 }
 
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
â–¼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

132 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Trying to make a a chase scene 0 Answers

List.contain only one variable 1 Answer

I made a Level System but i cant display my current level on my Ui 0 Answers

Fill Regular or irregular Shape made by 4 gameobjects with Prefabs or Primitive Types 0 Answers

Is Onmouseover() perfomance heavy? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges