首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抓取抓取点+偏移

抓取抓取点+偏移
EN

Stack Overflow用户
提问于 2020-03-22 03:24:43
回答 1查看 59关注 0票数 0

我在用2维的Unity做一个简单的游戏。所以我有一个播放器和一把抓取枪。当我按下鼠标右键时,鼠标位置在任何物体的方向上,它就会抓取这个物体。但我的问题是,我有一个小圆圈(抓取点),很难把鼠标放到空中的抓取点圆圈方向上。因此,我可以添加任何偏移f.e.当我的鼠标方向从玩家是2个单位的抓取点的圆,它仍然将抓取器,但自动的抓取线将连接到抓取点的圆。下面是我的抓取器代码:

代码语言:javascript
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Grappler: MonoBehaviour
{
    public LineRenderer Line;
    DistanceJoint2D Joint;
    Vector3 TargetPos;
    RaycastHit2D Hit;
    public float Distance = 10f;
    public LayerMask Mask;
    public float Step = 0f;

    void Start()
    {
        Joint = GetComponent<DistanceJoint2D>();
        Joint.enabled = false;
        Line.enabled = false;
    }
    void Update()
    {
        if(Joint.distance > 1f)
        {
            Joint.distance -= Step;
        }else
        {
            Line.enabled = false;
            Joint.enabled = false;
        }


        if(Input.GetMouseButtonDown(1))
        {
            TargetPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            TargetPos.z = 0;

            Hit = Physics2D.Raycast(transform.position, TargetPos - transform.position, Distance, Mask);

            if (Hit.collider != null && Hit.collider.gameObject.GetComponent<Rigidbody2D>() != null)
            {
                Joint.enabled = true;
                Joint.connectedBody = Hit.collider.gameObject.GetComponent<Rigidbody2D>();
                Joint.distance = Vector3.Distance(transform.position, Hit.point);

                Line.enabled = true;
                Line.SetPosition(0, transform.position);
                Line.SetPosition(1, Hit.point);
            }
        }

        if (Input.GetMouseButton(1))
        {
            Line.SetPosition(0, transform.position);
        }

        if (Input.GetMouseButtonUp(1))
        {
            Joint.enabled = false;
            Line.enabled = false;
        }
    }
}

有什么想法吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-03-22 04:50:36

听起来你应该简单地把你的碰撞放大2个单位(如果这是你想要作弊的数量)。然后,不使用光线跟踪命中位置,而使用您命中的对象的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60792317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档