Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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
C# 物体不断下落_C#_Unity3d_Physics - Fatal编程技术网

C# 物体不断下落

C# 物体不断下落,c#,unity3d,physics,C#,Unity3d,Physics,我在上面添加了一些截图。当我运行游戏时,障碍物正快速通过y轴下落。因此,地面上不再有障碍物。如果有地面,障碍物应该停止。我试着把它们冷冻起来。但是,当另一个物体击中它们时,它们被冻结了。所以,我想要地面来阻止他们。我还有一个问题。我有球员的动作。我什么时候运行这个程序。Player应该通过z轴。但是,对象(玩家)不移动 PlayerMovement.cs 使用UnityEngine; 公共类玩家运动:单一行为 { 公共刚体; 公共浮力=2000f; void FixedUpdate() { rb

我在上面添加了一些截图。当我运行游戏时,障碍物正快速通过
y
轴下落。因此,地面上不再有障碍物。如果有地面,障碍物应该停止。我试着把它们冷冻起来。但是,当另一个物体击中它们时,它们被冻结了。所以,我想要地面来阻止他们。我还有一个问题。我有球员的动作。我什么时候运行这个程序。
Player
应该通过
z
轴。但是,对象(玩家)不移动

PlayerMovement.cs

使用UnityEngine;
公共类玩家运动:单一行为
{
公共刚体;
公共浮力=2000f;
void FixedUpdate()
{
rb.AddForce(0,0,forwardForce*Time.deltaTime);
if(Input.GetKey(“d”)){
rb.AddForce(30*Time.deltaTime,0,0,ForceMode.VelocityChange);
}else if(Input.GetKey(“a”)){
rb.AddForce(-30*Time.deltaTime,0,0,ForceMode.VelocityChange);
}
如果(!Input.touchSupported)
{
//仍然支持PC密钥
if(Input.GetKey(KeyCode.D))
{
rb.AddForce(30*Time.deltaTime,0,0,ForceMode.VelocityChange);
}
else if(Input.GetKey(KeyCode.A))
{
rb.AddForce(-30*Time.deltaTime,0,0,ForceMode.VelocityChange);
}
}
其他的
{
//用于触摸设备
如果(Input.touchCount==1)
{
var touch=Input.GetTouch(0);
var touchPos=触摸位置;
var isRight=touchPos.x>=屏幕宽度/2f;
如果(isRight)
{
rb.AddForce(30*Time.deltaTime,0,0,ForceMode.VelocityChange);
}
其他的
{
rb.AddForce(-30*Time.deltaTime,0,0,ForceMode.VelocityChange);
}
}
}
if(物理光线投射(变换位置,矢量3向下,0.5f)=false){
//rb.velocity=新矢量3(0,rb.velocity.y,0);
rb.constraints=RigidbodyConstraints.FreezePositionZ;
}否则{
rb.constraints=RigidbodyConstraints.None;
}
如果(径向位置y<-1f){
FindObjectOfType().EndGame();
}
}
}
PlayerCollision.cs

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.SceneManagement;
公共类玩家集合:单一行为
{
公众游戏运动;
void onCollisionCenter(碰撞信息)
{
Log(collisionInfo.collider.name);
if(collisionInfo.collider.tag==“障碍物”)
{
movement.enabled=false;
FindObjectOfType().EndGame();
}else if(collisionInfo.collider.name==“END”){
FindObjectOfType().CompleteLevel();
}
}
void Restart(){
加载场景(SceneManager.GetActiveScene().name);
}
}

如果你看清楚上面的源代码。因此,您可能会看到我在那里有一个
Debug.Log
。但是,当我运行游戏时。我没有收到任何信息

作为一个新的游戏开发者(学习),我不知道发生了什么,这有什么问题


实际上我对地面有意见。可能是因为重置了图形设置。我创造了另一个领域。然后,物体就不再下落了~如何防止物体坠落?


我移除了刚体和长方体碰撞器。然后,添加了一个新的。然后,我注意到物体在下落。但是,我有另一个问题,那就是物体无法探测地面。就像它自由下落,没有任何障碍。所以,我设置了碰撞检测:连续~如何让我的玩家移动?

你的场地怎么样?关于你的玩家移动,你应该记录你的
rb.constraints=RigidbodyConstraints.FreezePositionZ行,因为您的光线可能不够长,无法击中地面,因此您可能会冻结Z轴上的玩家。@ğağatayIŞIK我添加了地面信息。但是,我认为我根本就没有这个问题……@ğatayIŞIK我删除了这些行,尝试了
PlayerMovement
的源代码。注意:您可能会说还有另一个脚本名为
GroundCheck.cs
。实际上,这个脚本是完全空的。所以,我会说不要问那个脚本的源代码。如果你有疑问,我可以给你的源代码,确保你有碰撞附加,加上使用和定义一个层将是好的。