相关疑难解决方法(0)

如何防止对手穿过对方?

我无法将游戏对象保留在包含的空间内.当它们到达边缘时,会有一些瞬间推回,但随后它们将穿过墙壁.

我在玩家上使用了Box Collider,在水平墙上使用了Mesh Collider.我对玩家角色(太空飞船)的问题表明该运动是由玩家控制的.并且使用射弹,它们是火,忘记以恒定速度移动.

这是我的播放器的移动代码.它正在FixedUpdate()函数中运行.

//Movement
    haxis = Input.GetAxis("Horizontal") * speed;
    vaxis = Input.GetAxis("Vertical") * speed;

    moveVector.x = haxis;
    moveVector.z = vaxis;

    if(moveVector.magnitude > 1)
    {
        moveVector.Normalize();
    }

    rigidbody.MovePosition(transform.position + moveVector * speed);
Run Code Online (Sandbox Code Playgroud)

通过子弹,它们被赋予速度并且引擎计算他们的电影.他们正在使用Box Collider并将其设置为Trigger,因此他们没有物理.但我用它OnTriggerEnter来摧毁它们.

//Projectiles without physics collisiions
function OnTriggerEnter (other : Collider) {
    Destroy(gameObject);
}
Run Code Online (Sandbox Code Playgroud)

击中网眼对撞墙时,有些但不是所有的子弹都会被摧毁.玩家有时会击中并停止,但通常可以通过它.如何每次都与网格对撞机碰撞?

unity-game-engine game-physics

17
推荐指数
3
解决办法
11万
查看次数

留在移动平台上

我正在Unity中编写2D平台游戏,我正试图让玩家留在移动平台上.我现在已经做了一两天的搜索和修补,我没有运气.

基本上,我被告知要在角色接触时尽量让角色随平台移动.首先,如果我使用与OnTriggerEnter()相关的任何内容,则播放器会直接通过平台.如果我做OnCollisionEnter()(在播放器上有一个CharacterController,在平台上有一个BoxCollider),根本没有任何事情发生.这是我发现最常见的两件事.另一个是用平台养育玩家,但这显然会导致"问题"(经常陈述,从未解释过).

那么,我怎样才能让玩家留在移动平台上?以下是移动平台的代码:

public class MovingPlatform : MonoBehaviour
{
private float useSpeed;
public float directionSpeed = 9.0f;
float origY;
public float distance = 10.0f;

// Use this for initialization
void Start () 
{
    origY = transform.position.y;
    useSpeed = -directionSpeed;
}

// Update is called once per frame
void Update ()
{
    if(origY - transform.position.y > distance)
    {
        useSpeed = directionSpeed; //flip direction
    }
    else if(origY - transform.position.y < -distance)
    {
        useSpeed = -directionSpeed; //flip direction
    }
    transform.Translate(0,useSpeed*Time.deltaTime,0);
}
Run Code Online (Sandbox Code Playgroud)

这里是玩家移动的代码(在更新中):

CharacterController …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

unity-game-engine ×2

c# ×1

game-physics ×1