c# - 在移动平台上移动敌人
问题描述
我有一个设置,其中包括一个移动平台(绿色)和一个在上面巡逻的敌人,如下所示:
平台周期性地左右移动,巡逻的敌人也在使用rigidbody.velocity
. 两者分别在运动时看起来都很好。但是当敌人在平台的顶部时,敌人是平台的子对象,即使我已经纠正了平台的速度,敌人也显得静止(只是在它的位置播放移动动画)。以下是我用于巡逻敌人的代码片段:
void Start()
{
myRigidBody = GetComponent<Rigidbody2D>();
parent = transform.parent;
parentVelocity = new Vector2(0f, 0f);
}
// Update is called once per frame
void Update()
{
if (parent != null && parent.GetComponent<Rigidbody2D>() != null)
parentVelocity = parent.GetComponent<Rigidbody2D>().velocity;
Debug.Log("parentVelocity=== " + parentVelocity);
if (IsFacingRightOrUp())
{
if (moveVertical)
myVelocity = new Vector2(0f, moveSpeed);
else
myVelocity = new Vector2(moveSpeed, 0f);
}
else
{
if (moveVertical)
myVelocity = new Vector2(0f, -moveSpeed);
else
myVelocity = new Vector2(-moveSpeed, 0f);
}
Debug.Log("myRigidBody.velocity === " + myVelocity);
myRigidBody.velocity = myVelocity + parentVelocity;
Debug.Log("myRigidBody.velocity === " + myRigidBody.velocity);
}
它按如下方式生成调试日志,parentVelocity
默认为 (0,0):
我应该怎么做才能使敌人的运动与平台上的观察者相同,因为当他们都站在静止的地面上时会出现敌人的运动?
应用的更正myRigidBody.velocity = myVelocity + parentVelocity;
似乎根本不重要。无论修正如何,敌人都显得静止。如果我将移动平台的速度更改为零,它会按预期工作。为什么相对速度校正不起作用?
即使我将速度硬核到 100,敌人也似乎是静止的,尽管刚体组件正确地将速度显示为 100。
解决方案
在没有相对速度校正的情况下添加transform.Translate(myVelocity * Time.deltaTime);
解决了这个问题,尽管我不完全理解为什么。
void Update()
{
if (IsFacingRightOrUp())
{
if (moveVertical)
myVelocity = new Vector2(0f, moveSpeed);
else
myVelocity = new Vector2(moveSpeed, 0f);
}
else
{
if (moveVertical)
myVelocity = new Vector2(0f, -moveSpeed);
else
myVelocity = new Vector2(-moveSpeed, 0f);
}
myRigidBody.velocity = myVelocity;
transform.Translate(myVelocity * Time.deltaTime);
}
推荐阅读
- android - Foregroundservice startforeground 不显示通知
- android - android:elevation 不适用于矢量可绘制对象的 imageView
- unity3d - 如何制作像 Mobile Legends 或其他 MOBA 游戏一样的“Find Match”?
- java - 如何链接返回 Completable 的函数列表一个接一个地运行?
- jquery - 如何从'获取文本值
' 标签?我无法从 '
' 带有 jQuery 方法的标签
- java - Eclipse 错误:在顶级目录中找到 JDOMAbout$Author.class(模块中不允许使用未命名的包)
- node.js - 关于 Sequelize 数据库迁移的问题
- php - 如何使用 PHP 简单的 html dom 解析器从 html 中查找值
- nix - Nix 覆盖和覆盖模式
- r - 如何访问从 StandardGeneric 调用的函数?