unity3d - 用手指在 x 轴 3d 上移动对象
问题描述
我有一个问题:如何用手指在智能手机上移动 x 轴上的对象?在互联网上,我只能找到 2d 的解决方案,但不能找到 3d 项目的解决方案。
我试过这段代码,但它真的很生涩:
void FixedUpdate()
{
if (Input.touchCount == 1) {
touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Moved) {
transform.position = new Vector3(
transform.position.x + touch.deltaPosition.x * speedModifier,
transform.position.y,
transform.position.z
);
}
}
transform.position = new Vector3(
transform.position.x,
transform.position.y,
transform.position.z + (speed * Time.fixedDeltaTime)
);
}
真正的问题是,我怎样才能使这段代码运行顺畅,因为它目前真的很不顺畅?
解决方案
如果您想将播放器移动到您按下的位置,您可以使用比您的更简单的代码:
if (Input.touchCount > 0)
{
touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Moved)
{
transform.position = new Vector3(
transform.position.x,
transform.position.y,
transform.position.z + touch.deltaPosition.x * speed);
}
}
它是非常可定制的,在这种情况下,例如,我正在沿z-axis移动播放器,就像在您的示例中一样,但这取决于手指从左到右的位置。
您可以按照自己喜欢的方式轻松更改代码的最后一部分,例如:
transform.position = new Vector3(
transform.position.x + touch.deltaPosition.x * speed,
transform.position.y + touch.deltaPosition.y * speed,
transform.position.z);
这样,它会根据您按下的点上下左右移动,这对于 2d 视图中的游戏可能很有用。在 3D 中,请记住,如果您向上按,大部分时间您都想在z 轴上移动,所以我的第一个代码运行良好,因为我正在更改 x 触摸上的 z 位置。
推荐阅读
- javascript - 在html文件中编写脚本的正确方法
- sql-server - 在 SSMS 中执行简单的 SQL 更新查询需要 50 分钟
- amazon-web-services - API-Gateway 集成请求 HTTP 标头未将查询字符串映射到标头
- jquery - 为什么选择元素中没有填充 json 数据?
- cron - 在 macOS 终端中设置 crontab 时遇到问题
- c - 将 '\0' 分配给指针是否与分配 NULL 相同?
- r - 如何整合对称数据框的两半
- javascript - 为什么我的 three.js 画布周围有一条线?
- javascript - 为什么“new Image()”会立即触发网络请求而“createElement('script')”不会?
- rust - cargo run 不反映 main.rs 中的任何代码更改