c# - 如何制作带瞄准的射击技工?
问题描述
我目前正在制作一个自上而下的 2d 游戏并进行了基本的移动,但是角色并没有朝鼠标的方向转动,而是移动它只是朝移动的方向转动我不知道如何解决这个问题。
这是代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class script1 : MonoBehaviour
{
public float moveSpeed;
public Rigidbody2D rb;
public Camera cam;
private Vector2 moveDirection;
Vector2 mousePos;
Vector2 lookDir;
void ProcessInputs()
{
float moveX = Input.GetAxisRaw("Horizontal");
float moveY = Input.GetAxisRaw("Vertical");
moveDirection = new Vector2(moveX, moveY); //TODO dont forget come back later
}
// Update is called once per frame
void Update()
{
ProcessInputs();
mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
}
void FixedUpdate()
{
lookDir = mousePos - rb.position;
Move();
}
void Move()
{
rb.velocity = new Vector2(moveDirection.x * moveSpeed, moveDirection.y * moveSpeed);
float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
rb.rotation = angle;
}
}
提前致谢。
解决方案
在你的Move()
方法而不是使用rb.velocity
你应该使用rb.MovePosition
. 还要确保包括Time.fixedDeltaTime
或Time.deltaTime
一切正常运行。
rb.MovePosition(rb.position + moveSpeed * Time.fixedDeltaTime * moveDirection);
Vector2 lookDir = mousePos - rb.position;
float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
rb.rotation = angle;
我希望这能够帮到你。
推荐阅读
- python - 使用 Python beautifulSoup 抓取特定的 dd 项目
- azure-devops - 如何使用 Azure DevOps REST Api 从我的 powershell 控制台将文件上传到 Azure Artifacts?
- python - python和telethon异常请求不成功6次
- java - 外观和感觉在 JDialog 上发生变化
- angular - chunk {main} main.js, main.js.map (main) 2.1 kB [initial] [rendered] 无法读取角度未定义的属性“map”
- javascript - 如何将 Javascript 变量用于表单操作标记?
- autodesk-forge - 如何更改多张图纸上的图纸?
- assembly - 在 void 函数中的空 return 语句后 %rax 会发生什么?
- sql-server - 使用 MSSQL 工具 sqlcmd,是否可以设置行分隔符?
- python - python中的字符串操作以转换“大写锁定”旁边的单词的大小写