unity3d - 如何让弹丸直出?
问题描述
所以我正在制作一个程序来从敌人的 npc 发射弹丸(不是我自己的程序,它来自 youtube 视频),它们只会在某些方向上向前射出。这是我的程序:agent.SetDestination(transform.position);
transform.LookAt(player);
if (!alreadyAttacked)
{
alreadyAttacked = true;
Invoke(nameof(ResetAttack), timeBetweenAttacks);
//Attack settings
Rigidbody rb = Instantiate(projectile, transform.position, Quaternion.identity).GetComponent<Rigidbody>();
rb.AddRelativeForce(transform.forward * 32f, ForceMode.Impulse);
难道我做错了什么?如果这会改变任何东西,那么发射弹丸的敌人也是一个 1x1x1 胶囊。
解决方案
AddRelativeForce 在本地空间中,所以如果你传递 Vector3.forward 它将是它所附加的刚体对象的正向。相反, transform.forward 在世界空间中。你可以在这里阅读更多。如果你想使用 AddRelativeForce 试试这个,
rb.AddRelativeForce(Vector3.forward * 32f, ForceMode.Impulse);
推荐阅读
- ios - UICollectionView AutoSizingCells reloadData()上的奇怪跳转/故障
- java - 尝试安装sas软件时出现以下情况
- php - 选择查询的流明时区相关问题
- python - 给定两个“if”语句,如果其中没有一个被执行,则执行一些代码
- python - TypeError:列表索引必须是整数,而不是 str (MAPNIK)
- flutter - 在 Flutter 中推送新页面时,Navigator 堆栈上的页面会重建
- sql - 我可以在 2 个不同的表中但在 Oracle 的相同列上使用相同的索引吗
- python - Pandas 中的 lambda 函数后索引列消失
- ruby - 转义字符串中的单引号并将该字符串插入另一个带有未转义单引号的字符串
- asp.net - 我看到这个错误 ORA-01722: invalid number when I want to insert data to oracle database table