unity3d 点击时使玩家角色向鼠标光标方向冲刺/冲锋

qlfbtfca  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(149)

我正试图使一个破折号/收费攻击光标位置与最大破折号长度,我不确定如何做,因为我是非常新的统一和编码一般。
它将类似于这个代码,除了不是瞬间移动的字符将破折号。

if (Physics.Raycast(ray, out hit, rayLength, layerMask) && Input.GetMouseButtonDown(1))
            {
                Vector3 hitPosition = new Vector3(hit.point.x, transform.position.y, hit.point.z);
                player.transform.position = hitPosition;

            }
siv3szwd

siv3szwd1#

在youtube上搜索“在Unity中移动对象的不同方法”。我建议的解决方案是使用AddForce而不是Transform.Position。示例:
1.使用AddForce就像向一个方向踢球一样。
1.使用变换位置就像把球带到所需的位置。

enyaitl3

enyaitl32#

使用AddForce的解决方案如下所示:

// Gets executed, on every left click
if (Input.GetMouseButtonDown(0))
{
    float force = 5f;
    Rigidbody2D rb = GetComponent<Rigidbody2D>();

    // Gets the position of your mouse cursor in world space
    Vector3 direction = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    
    rb.AddForce(direction * force, ForceMode2D.Impulse);
}

你可以把它放到Update方法中。
但是请注意,您可能应该缓存Camera.mainRigidbody2D,因为每帧都进行查找的效率非常低。
您还可以/应该将force设置为检查器中可用的字段,这样您就可以根据自己的喜好轻松地对其进行调整:)

相关问题