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
。实际上,这个脚本是完全空的。所以,我会说不要问那个脚本的源代码。如果你有疑问,我可以给你的源代码,确保你有碰撞附加,加上使用和定义一个层将是好的。