unity 愤怒的小鸟制作2
对小鸟进行弹出弹弓的操作,Kinematic:运动学的,设置在鼠标按下的时候开启运动学属性,当鼠标抬起时对弹簧SpringJoin2D操作持续0.1s进行力的计算。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class bird : MonoBehaviour
{
private bool isClick = false;
public Transform rightPos;
public float maxDis = 3;
private SpringJoint2D sp;
private Rigidbody2D rg;
private void Awake()
{
sp = GetComponent<SpringJoint2D>();
rg = GetComponent<Rigidbody2D>();
}
private void OnMouseDown()//鼠标按下
{
isClick = true;
rg.isKinematic = true;//开启运动学计算
}
private void OnMouseUp()//鼠标抬起
{
isClick = false;
rg.isKinematic = false;//关闭运动学计算
Invoke("Fly", 0.1f);//对小鸟的刚体进行延时操作,使之有时间计算力的大小
}
private void Update()
{
if (isClick)//鼠标一直按下状态,进行位置的跟随
{
transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);//转化位置坐标函数,把鼠标的坐标转化为小鸟的位置坐标
transform.position += new Vector3(0, 0, 10);//转化完小鸟的位置位于三维的平面z轴的-10位置,所以通过z轴加10的操作使小鸟位于二维平面的位置
if(Vector3.Distance(transform.position,rightPos.position) >maxDis)//进行位置的限定
{
Vector3 Pos = (transform.position - rightPos.position).normalized;//向量单位化
Pos *= maxDis; //单位化之后乘上一个数值;
transform.position = Pos + rightPos.position;//基于rightpos这个点向外加上一个为Pos的向量,得到小鸟的最终位置
}
}
}
void Fly()
{
sp.enabled = false;
}
}
Unity游戏开发:模拟弹弓操作实现愤怒的小鸟

被折叠的 条评论
为什么被折叠?



