簡體   English   中英

剛體小怪在行走時跌落地面

[英]Rigidbody Mobs fall through ground while walking

我有一個很奇怪的問題,我為我的游戲統一創建了自定義MOB AI(它具有程序生成的體素世界,因此代理不能很好地工作)。 我在移動的小怪上使用剛體。

但是我有一個問題,就是小生物在移動時會進入地板內(站立時不會發生),站立時會向后移動! 這不是動畫,我禁用了動畫,但它仍然會發生。

這是我如何移動它們:

   private void WalkToTarget()
{
    if (goal != Vector3.zero)
    {
        if (goal.y <= 5)
        {
            currentstatus = MOBSTATUS.STANDING;
            return;
        }
        var distance = Vector3.Distance(VoxelPlayPlayer.instance.transform.position, gameObject.transform.position);
        if (distance < 15)
        {
            goal = VoxelPlayPlayer.instance.transform.position;
            goal.y = VoxelPlayEnvironment.instance.GetHeight(goal);
        }
        if (distance < 5)
        {
            this.currentstatus = MOBSTATUS.ATTACKING;
        }
        //MOVEMENT HAPPENS HERE
        Vector3 direction = (goal - mobcontroller.transform.position).normalized*2f;
        if(mobcontroller.collisionFlags!=CollisionFlags.CollidedBelow)
        direction+= Vector3.down;
        mobcontroller.Move(direction * Time.fixedDeltaTime);
        RotateTowards(direction);
    }
}

編輯:

所有代碼: https//pastebin.com/khCmfKGi

問題的一部分是您使用的CollisionFlags錯誤。

代替這個:

if(mobcontroller.collisionFlags!=CollisionFlags.CollidedBelow)

你需要這樣做

if(mobcontroller.collisionFlags & CollisionFlags.CollidedBelow)

因為您正在嘗試檢查暴徒是否至少在下面碰撞,所以不是要檢查暴徒是否在下面碰撞。

即使這樣, CharacterController.Move也不應該使您自己通過碰撞器。

我懷疑在某些情況下RotateTowards(direction)可能會在地面上旋轉暴民對撞機的邊界。 為避免這種情況,我建議創建一個lookDirection,使您在執行RotateTowards時保持字符旋轉平緩:

Vector3 direction = (goal - mobcontroller.transform.position).normalized*2f;
if(mobcontroller.collisionFlags & CollisionFlags.CollidedBelow)
    direction+= Vector3.down;
mobcontroller.Move(direction * Time.fixedDeltaTime);

Vector3 lookDirection = (goal - mobController.transform.position);
lookDirection.y = mobController.transform.y;
RotateTowards(lookDirection);

在暴民上使用RigidbodyCharacterController時發生此問題。 從暴民Rigidbody移除Rigidbody就解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM