Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 统一滚球-滚球速度不会超过3.8。。。有时_Unity3d_Game Physics - Fatal编程技术网

Unity3d 统一滚球-滚球速度不会超过3.8。。。有时

Unity3d 统一滚球-滚球速度不会超过3.8。。。有时,unity3d,game-physics,Unity3d,Game Physics,我一直在学习区做滚球项目。我最近添加了一个速度文本字段,我注意到当我第一次开始播放时,如果按W或S,则速度不会超过3.8或低于-3.8。如果我向左或向右移动一根头发,这将解决问题,我可以像正常情况一样使用W和S移动。如果我把球撞到墙上,也会发生同样的情况。如果我在编辑器中以.0000001,5,0而不是0,5,0开始球,也不会出现小故障。万一我把代码搞砸了,我会把它贴在下面 using UnityEngine; using UnityEngine.UI; using System.Coll

我一直在学习区做滚球项目。我最近添加了一个速度文本字段,我注意到当我第一次开始播放时,如果按W或S,则速度不会超过3.8或低于-3.8。如果我向左或向右移动一根头发,这将解决问题,我可以像正常情况一样使用W和S移动。如果我把球撞到墙上,也会发生同样的情况。如果我在编辑器中以.0000001,5,0而不是0,5,0开始球,也不会出现小故障。万一我把代码搞砸了,我会把它贴在下面

 using UnityEngine;
 using UnityEngine.UI;
 using System.Collections;

 public class PlayerController : MonoBehaviour {
     public float moveSpeed;
     public float accelSpeed;
     private int pickupCount;
     public Text countText;
     public Text winText;
     public Text speedGage;

     void Start(){
         pickupCount = 0;
         setCountText();
         winText.text = "";
         speedGage.text = "0";
     }
     void FixedUpdate(){
         updateMovement();

     }
     void updateMovement(){
         float moveHorizontal = Input.GetAxis("Horizontal");
         float moveVertical = Input.GetAxis("Vertical");
         Vector3 movement = new Vector3(moveHorizontal,0,moveVertical);
         rigidbody.AddForce(movement * moveSpeed * Time.deltaTime);
         speedGage.text = rigidbody.velocity.ToString();
     }
     void OnTriggerEnter(Collider other){
         if(other.gameObject.tag == "PickUp"){
             other.gameObject.SetActive(false);
             pickupCount += 1;
             setCountText();
         }
     }
     void setCountText(){
         countText.text = "Count: " + pickupCount.ToString();
         if(pickupCount == 16){
             winText.text = "You Win!";
         }
     }
 }

这个问题在这里已经有一段时间没有答案了,所以如果你还没有找到解决方案,或者其他人可能会发现自己正在寻找答案

在rigidbody.AddForce调用中,移动向量乘以movespeed和Time.deltaTime,这使得值非常小。尝试将其更改为以下内容:

rigidbody.AddForce(movement * movespeed, Forcemode.Force);
或者,如果要忽略球的质量以进行突然的方向更改,请使用Forcemode.VelocityChange

时间已经被分解到rigidbody.AddForce中,因为只要球没有卡在障碍物上,由于对速度的影响,结果将展开为以下物理步骤