首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >鼻咽癌穿墙而过

鼻咽癌穿墙而过
EN

Stack Overflow用户
提问于 2020-05-11 21:59:29
回答 1查看 64关注 0票数 1

我目前正在开发一个战术RPG,我已经设置了围墙,以防止NPC移动到游戏区域之外。然而,全国人民代表大会正在穿透墙壁。他有一个刚体,一个盒子对撞机附着在他身上,他被触发了。此外,使用重力选项和运动学也被标记。这些墙有一个刚体和一个盒子碰撞器。它们不会被触发。

我正在使用下面的代码来移动NPC:

代码语言:javascript
复制
targetPosition.y = 1.4f;
targetPosition.x = this.transform.position.x + 3;
targetPosition.z = this.transform.position.z;
this.transform.position = Vector3.MoveTowards(transform.position, targetPosition, velocity);

我读到过这种移动方式可能会导致这个问题。是那么回事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-12 04:56:10

如果你的GameObject上连接了Rigidbody,你应该用它来移动它,而不是Transform,因为它是刚体与物理引擎对话并负责同步位置。在这个场景中,适当的函数应该是Rigidbody.MovePosition

代码语言:javascript
复制
using UnityEngine;
using System.Collections;
using System.Collections.Generics;

public class NPC: MonoBehaviour
{
    [SerializeField] private float speed = 5f;
    [SerializeField] private Rigidbody rigidbody;

    void FixedUpdate()
    {
        rigidbody.MovePosition(rb.position + new Vector3(3f, 0f, 0f) * speed * Time.fixedDeltaTime;
    }
}

因为我们使用物理来移动GameObject,所以逻辑必须放在FixedUpdate中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61731488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档