c# - 弹丸旋转
问题描述
我想知道如何使用函数 Lookat 将子弹实例化到对手的方向?因为按照我编程的方式,弹丸只是直线前进。
我正在使用此功能来射击弹丸:
public void TeslaShooting() //Tesla's shooting method
{
for (int i = 0; i < Personagens.Length; i++) {
if (Personagens[i].tag == "Tesla" && Input.GetMouseButtonDown(1) && Personagens[i].GetComponent < Jogador > () && Personagens[i].GetComponent < Jogador > ().PodeAtacar == false && Personagens[i].GetComponent < Jogador > ().isPlayer) {
//raycast checks and returns an object, if it's a tile, the unit shoots
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) {
if (hit.transform.tag == "Monster" || hit.transform.tag == "Orc" || hit.transform.tag == "Vampire") {
//instantiates the bullet
GameObject tiro = Instantiate(projetil, SpawBala.transform.position, SpawBala.transform.rotation);
Rigidbody BalaRigid = tiro.GetComponent < Rigidbody > ();
BalaRigid.velocity = SpawBala.transform.forward * ProjetilVeloc * Time.deltaTime;
gameManager.PontoAcaop1--;
Personagens[i].GetComponent < Jogador > ().PodeAtacar = true;
interfaceManager.ActionPointDown();
}
}
}
}
}
如果对手在我身边或在对角线位置,我无法击中他。
我该如何解决?
解决方案
您需要做的是在控制弹丸运动的脚本中添加 LookAt,您必须有一行代码覆盖您的tiro.transform.LookAt(hit.transform.position)
. 我不确定的另一件事是您是在更新函数中使用前一行代码(因此它永久查看目标)还是仅在拍摄函数中(因此它在第一帧查看目标)?
PS:虽然这不是最终答案,但它可能会对您有所帮助,我会在评论部分写出来,但我没有足够的权利。
推荐阅读
- java - 减少线条的粗细
- ios - 围绕 y 轴旋转视图
- amazon-web-services - 通过 Code-deploy 服务在 AWS 中跨账户部署
- cmake - 如何以编程方式配置 CLion 项目(.idea 文件)的设置
- python - 无法使用 Python 分割图像
- javafx - JavaFx如何使用cellFactory使tableColumnCell中的复选框可见
- java - 用于访问 Excel 工作表中的数据并将特定数据写入另一个 Excel 工作表的 Java 代码
- html - 使用 VBA 将数据从 Web 复制到 Excel
- odoo - 覆盖原始模块的翻译
- angular - 请求错误后重定向到注销