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
Object 物体碰撞问题-怪异行为-统一性_Object_Unity3d_Collision - Fatal编程技术网

Object 物体碰撞问题-怪异行为-统一性

Object 物体碰撞问题-怪异行为-统一性,object,unity3d,collision,Object,Unity3d,Collision,我想知道是否有人能帮我解决这个问题,我在统一体中遇到的物体和碰撞 我有一个球体物体被用户手机的加速计控制。球体可以很好地四处移动,但一旦碰到墙壁,球体就会开始表现出奇怪的行为。它沿着与之相撞的墙壁的方向拉动,开始反弹,只是总体上不再对手机的移动做出响应 你知道为什么会这样吗 以下是用于控制玩家球体的脚本 using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { pub

我想知道是否有人能帮我解决这个问题,我在统一体中遇到的物体和碰撞

我有一个球体物体被用户手机的加速计控制。球体可以很好地四处移动,但一旦碰到墙壁,球体就会开始表现出奇怪的行为。它沿着与之相撞的墙壁的方向拉动,开始反弹,只是总体上不再对手机的移动做出响应

你知道为什么会这样吗

以下是用于控制玩家球体的脚本

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {
public float speed;
void Update() {
    Vector3 dir = Vector3.zero;
    dir.x = Input.acceleration.x;
    dir.z = Input.acceleration.y;
    if (dir.sqrMagnitude > 1)
        dir.Normalize();

    dir *= Time.deltaTime;
    transform.Translate(dir * speed);
}

void OnTriggerEnter (Collider other) 
{
    if (other.gameObject.tag == "Pickup") {
        other.gameObject.SetActive(false);
    }
}
} 

这是因为你的物体有一个“刚体”成分,我想,它不是一个运动刚体。基本上,它的行为就像它应该的那样:一个真实的物理对象不会通过另一个对象,这是物理引擎最基本的行为。然而,由于您不使用力操作基于物理的对象,而是手动更改其位置,因此您打破了抽象级别。结果,您将对象移动到墙内,但现在它无法移出


使用方法代替。如果你想在每一帧的某个方向上拉动或推动对象(而不是仅仅移动,这与这些对象由物理管理的事实相矛盾),你应该在每一帧的物理上使用
ForceMode.Acceleration
(或者
ForceMode.Force
,如果你想让效果取决于质量),这意味着您必须使用
FixedUpdate
方法,而不是
Update

确切地说,“收集对象”是什么意思?此外,如果您提供有关游戏对象配置的准确信息,将更容易帮助您解决问题。有一个刚体,一个对撞机吗?刚体是动力学的吗?你用什么方法移动物体?同时,尽量减少问题的复杂性。例如,如果您仅使用普通输入替换加速计控件并在编辑器中运行(但其他内容保持不变),问题重现了吗?基本上是一个球体,用户控制它来收集点的对象。球体是一个刚体,有一个球体碰撞器,房间的墙壁有一个盒子碰撞器。我会尝试一下你写的东西,让你知道。同样,墙的作用是防止球体越过标高的边缘。