gpt4 book ai didi

android - 如果在屏幕上的任何位置单击,Unity 调用 3d 文本上的触摸功能。而不是只点击文字

转载 作者:行者123 更新时间:2023-11-29 15:23:03 26 4
gpt4 key购买 nike

我是 Unity 新手。我正在关注汽车教程并尝试将其移植到 Android。一些我如何设法在设备中移动汽车。问题是我正在使用 3D 文本,单击它可以使汽车加速。我做的是

创建了一个 3D 文本。添加了盒子对撞机。勾选 Box Collider 的 is Trigger 选项。添加了以下脚本。

 public var Mainref:TouchPlaneScript;

function FixedUpdate()
{

var touch: Touch = Input.touches[0];

if(touch.phase == TouchPhase.Began)
{
Mainref.applyBrake = true;
}
if(touch.phase == TouchPhase.Ended)
{
Mainref.applyBrake = false;
}

}

function Start ()
{
// Find the OtherScript which is attached to any game object in the scene.
Mainref = FindObjectOfType(TouchPlaneScript);
}

function OnMouseUp()
{
Mainref.applyBrake = false;
Debug.Log("Stop Brake");
}
function OnMouseDown()
{
Mainref.applyBrake = true;
Debug.Log("Apply Brake");
}

Touch Methods 中的逻辑可能是错误的,不用担心。我还在设备上运行时评论了鼠标功能的代码。但问题仍然存在。

问题是如果在屏幕上的任何地方触摸,都会调用触摸方法,而我希望仅在单击文本时调用触摸功能。

请注意,我在场景中有四个按钮。 left,right,brake,accel 都是 3d 文本,具有相同的结构和相同的问题。

最佳答案

您的代码通过检查输入触摸来检测点击事件,但您没有检查目标的位置,所以一旦您点击屏幕,所有事情都会发生。您需要检查触摸的位置以确保您的操作正确。代码如下(不熟悉JS,此为C#版本,需要自行翻译):

void FixedUpdate ()
{
if ( Application.platform == RuntimePlatform.IPhonePlayer ||
Application.platform == RuntimePlatform.Android )
{
if ( Input.touchCount <= 0 )
return;

// detect single touch only
Touch touch = Input.touches[0];

if ( touch.phase == TouchPhase.Began )
{
Debug.Log( 123 );
OnTouchBegan( touch.position );
}
}
else
{
if ( Input.GetMouseButtonDown( 0 ) )
{
Debug.Log(Input.mousePosition);
OnTouchBegan( Input.mousePosition );
}
}
}

void OnTouchBegan (Vector2 screenPos)
{
Ray ray = Camera.main.ScreenPointToRay( screenPos );
RaycastHit hit;

if ( Physics.Raycast( ray, out hit ) )
{
hit.collider.gameObject.SendMessage("OnClick", SendMessageOptions.DontRequireReceiver);
}
}

在此之后,您需要创建一个新脚本来实现 OnClick() 方法并将其附加到您的 3D 文本游戏对象上。然后当您点击它时,您的 3D 文本将收到 OnClick 消息。

希望这对您有所帮助。

顺便说一句,如果场景中有多个摄像机,则需要将 Camera.main 更改为看到 3D 文本的摄像机。

关于android - 如果在屏幕上的任何位置单击,Unity 调用 3d 文本上的触摸功能。而不是只点击文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16434494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com