Rigidbody2D 依然采用 Dynamic,在鼠标松开的一刻, 速率 乘以 一个 0-1 之间的浮点数 用来控制 弹力的大小
面板设置
以下是代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BirdsController : MonoBehaviour
{
[Header("旋转原点对象")]
public Transform trunOriginPoint;
[Header("限定的最大距离")]
public float maxDistance;
[Header("弹簧力")]
[Range(0f, 1f)]
public float springForce;
/// <summary>
/// 鼠标是否按住小鸟
/// </summary>
private bool isEnter = false;
private SpringJoint2D spj;
private Rigidbody2D rig;
private void Awake()
{
spj = GetComponent<SpringJoint2D>();
rig = GetComponent<Rigidbody2D>();
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (isEnter)
{
transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position += new Vector3(0,0, -Camera.main.transform.position.z);
if(Vector3.Distance(transform.position, trunOriginPoint.position) > maxDistance)
{
Vector3 dir = (transform.position - trunOriginPoint.position).normalized;
transform.position = dir * maxDistance + trunOriginPoint.position;
}
}
}
private void OnMouseDown()
{
isEnter = true;
spj.enabled = true;
}
private void OnMouseUp()
{
isEnter = false;
spj.enabled = false;
rig.velocity *= springForce;
}
}
------------------------------ 2022-10-11 月更新
类似愤怒小鸟发射 不要使用 SpringJoint2D 有些教学视频简直就是误人子弟 我们学习者要懂得思考 擦亮眼睛