gpt4 book ai didi

c# - 检测光标的更好方法?

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:22 26 4
gpt4 key购买 nike

目标:检测光标何时进入玩家定义的半径。

您好,我正在尝试复制一款名为 CrossCode 的游戏的战斗系统。我的想法是,当光标在玩家的特定半径内时,我将能够切换到近战,并在光标离开该半径后返回到远程。

我已经实现了一种我认为可以完成的方法,但是感觉很慢或不可靠,我只是想知道是否有任何其他方法可以研究以获得更平滑的结果。

这是我做的

附在播放器上

void Update()
{
attackStyleSwitchRadius = colRef.radius;
playerCenter = colRef.transform.position;

if(Physics2D.OverlapCircle(playerCenter, attackStyleSwitchRadius, cursor))
{
meleeMode = true;
rangeMode = false;
}
else
{
meleeMode = false;
rangeMode = true;
}

}

在一个小的 2D 对象上,我有这个脚本,以便它跟随光标位置。

void Update()
{
pos = Input.mousePosition;
gameObject.transform.position = Camera.main.ScreenToWorldPoint(pos);
}

当小物体进入重叠圆时,它会改变周围的 bool 值。

最佳答案

您可以通过执行类似的操作来消除碰撞检测开销;

void Update ()
{
attackStyleSwitchRadius = colRef.radius;
playerCenter = colRef.transform.position;

var mouse = Input.mousePosition;
mouse.z = Vector3.Distance(Camera.main.transform.position, playerCenter);

var range = Vector2.Distance(Camera.main.ScreenToWorldPoint(mouse), playerCenter);
var inside = range < attackStyleSwitchRadius;

meleeMode = inside;
rangeMode = !inside;
}

关于c# - 检测光标的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49648552/

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