C# 使三维对象看起来像是面对二维空间中的一个点
你会注意到的第一件事是复杂而混乱的标题。 让我解释一下 我正在尝试使用Unity在3D空间中制作2D游戏。我使用一个3D角色作为玩家。这看起来像: 正如你所见,背景(谷歌地图)是二维的。当玩家是一个躺在地上的3D物体时(它看起来就像是站着的) 到目前为止效果不错。但我希望3D角色看起来像是面对背景地图上的一个点击点 例如: 还有两个例子: 黑色圆圈表示抽头位置。因此,我完全不知道是否有办法做到这一点,甚至不知道是否有可能做到这一点 我尝试了以下代码,但这只会在不同的轴上旋转我的角色:C# 使三维对象看起来像是面对二维空间中的一个点,c#,google-maps,unity3d,3d,2d,C#,Google Maps,Unity3d,3d,2d,你会注意到的第一件事是复杂而混乱的标题。 让我解释一下 我正在尝试使用Unity在3D空间中制作2D游戏。我使用一个3D角色作为玩家。这看起来像: 正如你所见,背景(谷歌地图)是二维的。当玩家是一个躺在地上的3D物体时(它看起来就像是站着的) 到目前为止效果不错。但我希望3D角色看起来像是面对背景地图上的一个点击点 例如: 还有两个例子: 黑色圆圈表示抽头位置。因此,我完全不知道是否有办法做到这一点,甚至不知道是否有可能做到这一点 我尝试了以下代码,但这只会在不同的轴上旋转我的角色:
Vector3 targetDir = tapped.position - transform.position;
float step = speed * Time.deltaTime;
Vector3 newDir = Vector3.RotateTowards(transform.forward, targetDir, step, 0.0F);
transform.rotation = Quaternion.LookRotation(newDir);
有没有办法做到这一点?我现在没有主意了。。。
如果能得到任何帮助,我将非常高兴 这应该能奏效。将您的模型设置为未旋转的空模型的子模型,并将下面的脚本置于其上。我不知道你是怎么理解的,这是我在团结中尝试的。希望能有帮助
using UnityEngine;
public class LookAtTarget : MonoBehaviour {
//assign in inspector
public Collider floor;
//make sure you Camera is taged as MainCamera, or make it public and assign in inspector
Camera mainCamera;
RaycastHit rayHit;
//not needed when assigned in the inspector
void Start() {
mainCamera = Camera.main;
}
void Update () {
if(Input.GetMouseButtonUp(0)) {
if(floor.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity)) {
//its actually the inverse of the lookDirection, but thats is because the rotation around z later.
Vector3 lookDirection = transform.position - rayHit.point;
float angle = Vector3.Angle(lookDirection, transform.forward);
transform.rotation = Quaternion.AngleAxis(Vector3.Dot(Vector3.right, lookDirection) > 0 ? angle : angle * -1, Vector3.forward);
}
}
}
}
只需将目标方向的y值设为0即可。@Dreamsof谢谢您的快速回答!但这不起作用。玩家一直“躺”在地上,制造他将在地上行走的幻觉。当我把y设为0时,他突然真的站在地上。我想如果你把y和z切换,应该会显示出这种效果。如果你的目标方向是(1,0,1),让他面对(1,1,0)。@是的,谢谢你的回答!不幸的是,这也不起作用。当我点击某个位置时,角色要么在错误的轴上旋转,甚至什么都不做:/。是的,在我考虑了一段时间后,认为这会那么容易是愚蠢的。为您发布了一个小片段。谢谢您的快速回答!我刚测试过。但不知何故,这个角色现在不是平行的,而是站在地图上。他还绕z轴旋转。他应该与地图平行,并绕x轴旋转,使他看向点。我只是通过聆听触摸输入和光线投射来了解要点:)