Commit 3237868a authored by wanqing's avatar wanqing

关卡优化

parent 593df03a
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
<ItemGroup> <ItemGroup>
<Compile Include="Assets\0A2_Scripts\Battle\BattleCtrl.cs" /> <Compile Include="Assets\0A2_Scripts\Battle\BattleCtrl.cs" />
<Compile Include="Assets\0A2_Scripts\Battle\Collision\GroundCollision.cs" /> <Compile Include="Assets\0A2_Scripts\Battle\Collision\GroundCollision.cs" />
<Compile Include="Assets\0A2_Scripts\Battle\Collision\SixLevelCollision.cs" />
<Compile Include="Assets\0A2_Scripts\Battle\Collision\ThirdLevelBoxCollision.cs" /> <Compile Include="Assets\0A2_Scripts\Battle\Collision\ThirdLevelBoxCollision.cs" />
<Compile Include="Assets\0A2_Scripts\Battle\Collision\ThirdLevelBoxTarget.cs" /> <Compile Include="Assets\0A2_Scripts\Battle\Collision\ThirdLevelBoxTarget.cs" />
<Compile Include="Assets\0A2_Scripts\Battle\Collision\WallCollsionX.cs" /> <Compile Include="Assets\0A2_Scripts\Battle\Collision\WallCollsionX.cs" />
......
...@@ -218,6 +218,8 @@ MonoBehaviour: ...@@ -218,6 +218,8 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
battleUI: {fileID: 6020807041659695165} battleUI: {fileID: 6020807041659695165}
m_levelManager: {fileID: 186647396} m_levelManager: {fileID: 186647396}
m_cubeChildObj: {fileID: 3999034254530585921, guid: 2fa734ecf3700b14ebb662761f808de2,
type: 3}
--- !u!1 &1139781965 --- !u!1 &1139781965
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -453,6 +455,11 @@ PrefabInstance: ...@@ -453,6 +455,11 @@ PrefabInstance:
m_Modification: m_Modification:
m_TransformParent: {fileID: 0} m_TransformParent: {fileID: 0}
m_Modifications: m_Modifications:
- target: {fileID: 6064464676810081128, guid: 919382978f5e2684ba83e6daf6491458,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6064464677632144689, guid: 919382978f5e2684ba83e6daf6491458, - target: {fileID: 6064464677632144689, guid: 919382978f5e2684ba83e6daf6491458,
type: 3} type: 3}
propertyPath: m_Name propertyPath: m_Name
......
...@@ -41,12 +41,29 @@ public class BattleCtrl : MonoBehaviour ...@@ -41,12 +41,29 @@ public class BattleCtrl : MonoBehaviour
static BattleCtrl _Instance; static BattleCtrl _Instance;
public static BattleCtrl instance => _Instance; public static BattleCtrl instance => _Instance;
//缓存cube处理
public GameObject m_cubeChildObj;
Stack<GameObject> m_cubeObjStack = new Stack<GameObject>();
List<GameObject> m_cubeObjList = new List<GameObject>();
private List<Transform> m_cubeChildTransList = new List<Transform>();
private void Awake() private void Awake()
{ {
_Instance = this; _Instance = this;
//Assert.IsNotNull(battleUI, "battleUI is null"); //Assert.IsNotNull(battleUI, "battleUI is null");
InitServices(); InitServices();
Init(); Init();
for(int i = 0;i<m_cubeChildObj.transform.childCount;i++)
{
m_cubeChildTransList.Add(m_cubeChildObj.transform.GetChild(i));
}
for(int i = 0;i<5;i++)
{
GameObject varGo = GameObject.Instantiate(m_cubeChildObj);
varGo.SetActive(false);
m_cubeObjStack.Push(varGo);
m_cubeObjList.Add(varGo);
}
//TinySauce.OnGameStarted(); //TinySauce.OnGameStarted();
} }
...@@ -160,38 +177,48 @@ public class BattleCtrl : MonoBehaviour ...@@ -160,38 +177,48 @@ public class BattleCtrl : MonoBehaviour
{ {
m_levelManager.LoadLevel(levelIndex); m_levelManager.LoadLevel(levelIndex);
} }
public GameObject GetFromPool(Transform parent)
/// <summary> {
/// 加载回start场景 GameObject varGo = null;
/// </summary> if (m_cubeObjStack.Count > 0)
//public void LoadStartScene() {
//{ varGo = m_cubeObjStack.Pop();
// Camera.main.gameObject.SetActive(false); }
// sceneLoad.LoadSceneAsync("StartScene"); else
//} {
varGo = GameObject.Instantiate(m_cubeChildObj);
/// <summary> m_cubeObjList.Add(varGo);
/// 显示提示可操作的ui }
/// </summary> if(varGo)
//public void ShopTapToPlay() {
//{ varGo.transform.SetParent(parent, false);
// battleUI.ShowTapToPlay(); varGo.transform.localPosition = Vector3.zero;
//} for (int i = 0; i < varGo.transform.childCount; i++)
{
// void Update() varGo.transform.GetChild(i).GetComponent<Rigidbody>().mass = 0.1f;
// { //varGo.transform.GetChild(i).GetComponent<Rigidbody>().AddForce(Vector3.down * 20000000.0f, ForceMode.Force);
// if (!inited) }
// return; varGo.SetActive(true);
}
// sceneLoad.OnUpdate(); return varGo;
}
//#if UNITY_EDITOR public void BackToPool(GameObject go)
// if (Input.GetKeyDown(KeyCode.S))//停止pien的ai {
// { if(go)
// GameServices.debugService.stopPienAi = !GameServices.debugService.stopPienAi; {
// } go.transform.SetParent(null);
//#endif for (int i = 0; i < go.transform.childCount; i++)
// } {
go.transform.GetChild(i).localPosition = m_cubeChildTransList[i].localPosition;
go.transform.GetChild(i).localRotation = Quaternion.identity;
}
go.SetActive(false);
if(m_cubeObjStack != null)
{
m_cubeObjStack.Push(go);
}
}
}
private void OnDestroy() private void OnDestroy()
{ {
...@@ -203,6 +230,13 @@ public class BattleCtrl : MonoBehaviour ...@@ -203,6 +230,13 @@ public class BattleCtrl : MonoBehaviour
//m_levelManager.curLevel.OnDispose(); //m_levelManager.curLevel.OnDispose();
//m_levelManager = null; //m_levelManager = null;
//TinySauce.OnGameFinished(0); //TinySauce.OnGameFinished(0);
for(int i = 0;i< m_cubeObjList.Count;i++)
{
GameObject.Destroy(m_cubeObjList[i]);
}
m_cubeObjList.Clear();
m_cubeObjList = null;
m_cubeObjStack = null;
} }
} }
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SixLevelCollision : MonoBehaviour
{
public SixthLevelTrigger m_sixLevel;
private bool m_bCollider = true;
private MeshRenderer m_render;
private BoxCollider m_collider;
private GameObject m_cacheObj;
// Start is called before the first frame update
void Start()
{
m_render = GetComponent<MeshRenderer>();
m_collider = GetComponent<BoxCollider>();
//for (int i = 0; i < 4; i++)
//{
// for (int j = 0; j < 4; j++)
// {
// for(int k = 0;k < 4;k++)
// {
// GameObject go = GameObject.Instantiate(m_cube);
// go.transform.localPosition = new Vector3(j * 0.25f - 0.375f, i * 0.25f - 0.375f, k * 0.25f - 0.375f);
// go.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f);
// go.transform.SetParent(transform, false);
// }
// }
//}
}
private void OnCollisionEnter(Collision other)
{
if (other.collider.gameObject.CompareTag("Ball") && m_bCollider)
{
m_bCollider = false;
m_render.enabled = false;
m_collider.enabled = false;
m_cacheObj = BattleCtrl.instance.GetFromPool(transform);
if(m_sixLevel)
{
m_sixLevel.SetCollision();
}
GameServices.timerServices.Push(this, 2.0f, delegate
{
if(m_cacheObj)
{
BattleCtrl.instance.BackToPool(m_cacheObj);
}
});
}
}
// Update is called once per frame
void Update()
{
}
private void OnDestroy()
{
if (m_cacheObj)
{
BattleCtrl.instance.BackToPool(m_cacheObj);
}
}
}
fileFormatVersion: 2
guid: e2dd751f22d3dc941ac55948ef3ef129
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
...@@ -57,7 +57,7 @@ public class SixthLevelTrigger : MonoBehaviour ...@@ -57,7 +57,7 @@ public class SixthLevelTrigger : MonoBehaviour
//} //}
//第二种方案 //第二种方案
public Transform m_parent; public Transform m_parent;
public Transform m_cubeParent; public BoxCollider[] m_boxCollider;
public Transform m_player; public Transform m_player;
public GameObject[] m_obstract; public GameObject[] m_obstract;
private Rigidbody[] m_rigidArray; private Rigidbody[] m_rigidArray;
...@@ -71,6 +71,7 @@ public class SixthLevelTrigger : MonoBehaviour ...@@ -71,6 +71,7 @@ public class SixthLevelTrigger : MonoBehaviour
private Rigidbody m_playerRigid; private Rigidbody m_playerRigid;
private Animator m_animator; private Animator m_animator;
private Transform m_topTrans; private Transform m_topTrans;
private int m_index = 0;
private void Awake() private void Awake()
{ {
m_rigidArray = m_parent.GetComponentsInChildren<Rigidbody>(); m_rigidArray = m_parent.GetComponentsInChildren<Rigidbody>();
...@@ -106,9 +107,20 @@ public class SixthLevelTrigger : MonoBehaviour ...@@ -106,9 +107,20 @@ public class SixthLevelTrigger : MonoBehaviour
} }
} }
} }
public void SetCollision()
{
m_index = 0;
for (int i = 0; i < m_boxCollider.Length; i++)
{
if (!m_boxCollider[i].enabled)
{
m_index++;
}
}
}
private void Update() private void Update()
{ {
if (m_cubeParent.childCount <= 1 && m_bControl) if (m_bControl && m_index >= 3)
{ {
m_bControl = false; m_bControl = false;
for (int i = 0; i < m_rigidArray.Length; i++) for (int i = 0; i < m_rigidArray.Length; i++)
......
...@@ -13,22 +13,24 @@ public class ChainHandle : MonoBehaviour ...@@ -13,22 +13,24 @@ public class ChainHandle : MonoBehaviour
private Vector2 m_StartPos; private Vector2 m_StartPos;
private Vector2 m_DragPos; private Vector2 m_DragPos;
private Rigidbody m_rigidBody;//自身body private Rigidbody m_rigidBody;//自身body
private float m_topColliderPosY;//Y位置
// Start is called before the first frame update // Start is called before the first frame update
private void Awake() private void Awake()
{ {
m_rigidBody = gameObject.GetComponent<Rigidbody>(); m_rigidBody = gameObject.GetComponent<Rigidbody>();
m_topColliderPosY = transform.position.y;
//Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.Legacy; //Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.Legacy;
} }
private void OnTriggerEnter(Collider other) private void OnCollisionEnter(Collision other)
{ {
if (other.gameObject.CompareTag("Ball")) if (other.collider.gameObject.CompareTag("Ball"))
{ {
m_rigidBody.isKinematic = true; m_rigidBody.isKinematic = true;
} }
} }
private void OnTriggerExit(Collider other) private void OnCollisionExit(Collision other)
{ {
if (other.gameObject.CompareTag("Ball")) if (other.collider.gameObject.CompareTag("Ball"))
{ {
m_rigidBody.isKinematic = false; m_rigidBody.isKinematic = false;
} }
...@@ -43,6 +45,15 @@ public class ChainHandle : MonoBehaviour ...@@ -43,6 +45,15 @@ public class ChainHandle : MonoBehaviour
SetJoyStickDirectTrans(transform); SetJoyStickDirectTrans(transform);
m_thumbRT = GameServices.inputService.joyStick.thumb; m_thumbRT = GameServices.inputService.joyStick.thumb;
m_steelBallRigidBody.mass = GameServices.configService.playerConfig.SteelBallMass; m_steelBallRigidBody.mass = GameServices.configService.playerConfig.SteelBallMass;
//第六关特殊处理
if(BattleCtrl.instance.levelManager.CurLevelIndex == LevelEnum.levelSixIndex)
{
GameServices.inputService.joyStick.activated = false;
}
else
{
GameServices.inputService.joyStick.activated = true;
}
} }
void onSteelBallAddMassBtn() void onSteelBallAddMassBtn()
{ {
...@@ -88,26 +99,40 @@ public class ChainHandle : MonoBehaviour ...@@ -88,26 +99,40 @@ public class ChainHandle : MonoBehaviour
//移动 //移动
void OnMove(Vector3 dir) void OnMove(Vector3 dir)
{ {
if (!BattleCtrl.instance.isStartBattle)
{
return;
}
//第五关特殊处理
//if(BattleCtrl.instance.levelManager.CurLevelIndex != LevelEnum.levelFiveIndex)
{
m_rigidBody.drag = 10;
m_rigidBody.angularDrag = 10;
}
float varParamDis = Screen.width * GameServices.configService.playerConfig.ClawMoveSpeed / 2;//参数距离
Vector3 varPos = transform.position;
//向左滑 //向左滑
if (dir.x > 0) if (dir.x > 0)
{ {
m_mouseDir = LevelEnum.MouseDirEnum.Left; varPos.x -= dir.x / varParamDis * GameServices.configService.playerConfig.xDirMaxDis;
} }
//向右滑 //向右滑
if (dir.x < 0) if (dir.x < 0)
{ {
m_mouseDir = LevelEnum.MouseDirEnum.Right; varPos.x += dir.x / varParamDis * GameServices.configService.playerConfig.xDirMinDis;
} }
//向上滑 //向上滑
if (dir.y < 0) if (dir.y < 0)
{ {
m_mouseDir = LevelEnum.MouseDirEnum.Up; varPos.z += dir.y / varParamDis * GameServices.configService.playerConfig.yDirMinDis;
} }
//向下滑 //向下滑
if (dir.y > 0) if (dir.y > 0)
{ {
m_mouseDir = LevelEnum.MouseDirEnum.Down; varPos.z -= dir.y / varParamDis * GameServices.configService.playerConfig.yDirMaxDis;
} }
varPos.y = m_topColliderPosY;
transform.position = varPos;
} }
private void OnDestroy() private void OnDestroy()
{ {
...@@ -153,8 +178,8 @@ public class ChainHandle : MonoBehaviour ...@@ -153,8 +178,8 @@ public class ChainHandle : MonoBehaviour
float varMinY = GameServices.configService.playerConfig.yDirMinDis; float varMinY = GameServices.configService.playerConfig.yDirMinDis;
float varMaxY = GameServices.configService.playerConfig.yDirMaxDis; float varMaxY = GameServices.configService.playerConfig.yDirMaxDis;
transform.position = new Vector3(Mathf.Clamp(transform.position.x, varMinX, varMaxX), transform.position = new Vector3(Mathf.Clamp(transform.position.x, varMinX, varMaxX),
Mathf.Clamp(transform.position.y, varMinY, varMaxY), m_topColliderPosY,
0); Mathf.Clamp(transform.position.z, varMinY, varMaxY));
} }
} }
This diff is collapsed.
fileFormatVersion: 2
guid: 2fa734ecf3700b14ebb662761f808de2
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
...@@ -14,10 +14,10 @@ MonoBehaviour: ...@@ -14,10 +14,10 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
playerConfig: playerConfig:
moveSpeed: 1 moveSpeed: 1
xDirMinDis: -3.5 xDirMinDis: -5
xDirMaxDis: 4 xDirMaxDis: 3
yDirMinDis: 0.5 yDirMinDis: -3
yDirMaxDis: 12.4 yDirMaxDis: 4
clawMaxAngle: 34 clawMaxAngle: 34
clawRotateSpeed: 50 clawRotateSpeed: 50
ropeReduceSpeed: 2 ropeReduceSpeed: 2
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment