Unity C#"将精灵位置设置为鼠标指针"使精灵剪辑穿过其他精灵



我不能发布图片,但这里有一个imgur 的链接

https://i.stack.imgur.com/02mOg.jpg

(很抱歉,我在描述事物时遇到了很多困难,我认为图像会有所帮助)

我有一个简单的代码,用于一个带有圆形精灵贴图的圆形精灵,该贴图附着在弹簧上,当我按住精灵,将其向后拖动并释放鼠标时,对象会朝着与我将其向后拖的方向相反的方向飞行(几乎是愤怒的小鸟喜欢发射)。但是,当我拿着精灵时,我可以把它夹过我级别上的其他精灵,甚至是界外。球是浮动的,游戏应该能够拖动并向任何方向发射

我试着将弹簧的破断力设置在一个相当低的水平,这样,如果我把球拉得太远,球就不会弹出,但当我拖动它时,球仍然跟着我的鼠标,当我在弹簧断开后释放它时,它就会掉下来。

此外,我试图通过限制弹簧的长度来限制弹簧的半径。但是,它没有起作用。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LaunchScript : MonoBehaviour
{
public Rigidbody2D rb;
private bool isPressed = false;
public float releaseTime = 0.15f;
private void Update()
{
if (isPressed)
{
rb.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
}
// Start is called before the first frame update
void OnMouseDown()
{
isPressed = true;
rb.isKinematic = true;
}
// Update is called once per frame
private void OnMouseUp()
{
isPressed = false;
rb.isKinematic = false;
StartCoroutine(Release());
}
IEnumerator Release()
{
yield return new WaitForSeconds(releaseTime);
GetComponent<SpringJoint2D>().enabled = false;
this.enabled = false;
}
}

我的预期结果是:球会跟随鼠标并能够向后拖动,但它不会穿过绿色的地挡、篮筐或边界挡(用来防止球飞出界外的挡)。我的实际结果是:我可以把球拖到屏幕上的任何一个点,包括直接进入绿色地面和界外。

运动学刚体对撞机只能在非触发模式下检测到与刚体对撞机的碰撞(具有非运动学刚体的对撞机)

来自Unity手册:对撞机:

即使在不动的情况下,运动学刚体对撞机也有不同于静态对撞机的行为。例如,如果将对撞机设置为触发器,则还需要向其添加刚体,以便在脚本中接收触发器事件。如果不希望触发器受重力作用或受物理影响,则可以在其刚体上设置IsKinetic特性。

尝试使用isKinetic(例如反向启用/禁用或删除它)并禁用isTrigger。不要忘记你的球和环境中的对撞机和刚体。

最新更新