老师我发射的子弹感觉好软,一发射就掉下来了,而且我子弹打中鱼身上没用,我之前问过我老师他说什么没有弄成静态,不过我忘记了。。。
老师我发射的子弹感觉好软,一发射就掉下来了,而且我子弹打中鱼身上没用,我之前问过我老师他说什么没有弄成静态,不过我忘记了。。。
1.制作鱼游动动画
PlayerPrefs.DeleteKey("smallTimer");
PlayerPrefs.DeleteAll();
删除部分键值以及删除全部jian'zhi
gameObject.transform.position = Vector3.MoveTowards(transform.position, goldHolder.transform.position, 50 * Time.deltaTime);
MoveTowards:从当前位置直线移动到目标位置
bullet.transform.rotation = guns[gunIndex / 4].transform.Find("FirePos").transform.rotation;
1.rotation之间的赋值是指世界坐标的坐标轴重合
bullet.GetComponent<Move>().dir = Vector3.up;
2.控制子弹前进的方向是y轴方向
RectTransformUtility.ScreenPointToWorldPointInRectangle(UGUICanvas, new Vector2(Input.mousePosition.x, Input.mousePosition.y), mainCamera, out mousePos);
1.将一个屏幕坐标转化为UGUI上的世界坐标
Vector3.Angle(Vector3.up, mousePos - transform.position);
2.返回两个向量的夹角,永远是较小的那个角,且注意这个3D用的,2D用时要注意Z轴的影响
学到了,index = (index+1)%textures.Length这句很简洁,之前我都是if和else判断
循环取数,1到7,每次循环+1,超过7时重新变为1
int n;
InvokeReprating("OneToSeven",0,0.1f);
void OneToSeven()
{
n=(n+1)%7;
}
导入素材
project项目栏中单击右键选择import package,在选择custom package在弹出的界面中选择需要的package,在这里选择Assets package
直接在边界上将Rigidbody 2D Body Type改为 Dynamic Gravity Scale 设置为0 是可行的
鱼身上不需要添加Rigidbody 2D
被坑了 原来老师后面要将。。。。。。
PlayerPrefs方法
预制体实例化 也是 GameObject Prefabs
防UI穿透
Rigidbody 2D
动态模式下和碰撞器(Collider)和刚体碰撞
静态模式下只和动态模式碰撞
动力学Kin。。。
Vector.Angle返回一个小于180的角度
计算夹角方法
RectTransformUtility.ScreenPointToWorldPointInRectangle(UICanvas, new Vector2(Input.mousePosition.x, Input.mousePosition.y), maincamera, out mousePos);屏幕坐标转化为世界坐标
100
private static GameController _instance;
public static GameController Instance
{
get
{
return _instance;
}
}
单例模式 让其他脚本获取这个脚本 使用它的成员
其中_instance是在Awake赋值
_instance=this
1.Camera.ScreenToWorldPoint:转变position从屏幕空间到世界空间。屏幕空间以像素为单位定义。屏幕的左下角是(0,0);右上角是(pixelWidth,pixelHight)。z位置是相机的世界单位。
2.Event.mousePosition:鼠标位置。用于EventType.MouseMove和EventType.MouseDrag事件。窗口的左上角返回(0,0)。右下角返回(Screen.width,Screen.height)。
以上两种方法不太适合用于UGUI。
可以用UGUI中已经封装好的的方法:ScreenPointToWorldPoint。
3.public static bool ScreenPointToWorldPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam,out Vector3 worldPoint);
参数
{矩形 : RectTransform在里面找到一个点。
凸轮: 相机与屏幕空间位置相关联。
screenPoint : 屏幕空间位置。
worldPoint : 指向世界空间。}
将屏幕空间点转换为位于给定RectTransform平面上的世界空间中的位置。
cam参数应该是与屏幕点相关联的摄像机。对于Canvas中设置为Screen Space - Overlay模式的RectTransform,cam参数应为null。
当从提供PointerEventData对象的事件处理程序中使用ScreenPointToWorldPointInRectangle时,可以使用PointerEventData.enterEventData(用于悬停功能)或PointerEventData.pressEventCamera(用于单击功能)来获取正确的摄像机。这将自动为给定事件使用正确的相机(或null)。
float Angle(Vector2 from, Vector2 to)
1.2D模式和3D模式的区别,2D模式默认的摄像机的模式是Orthographic(正交摄像机),3D模式默认的摄像机的模式是Perspective(透视摄像机)。3D会额外给你一个平衡光。3D模式修改为2D模式,点击Edit下面的Editor 修改为2D。
2.Overiay模式:叠加层,
3.Camer模式:指定摄像机,跟3d有点关系,灵活性更高