145 lines
5.1 KiB
C#
145 lines
5.1 KiB
C#
/********************************************************************
|
||
文件名: Obj_Snare.cs
|
||
创建时间: 2014/05/11 14:55
|
||
全路径: TLOL\Version\Main\Project\Client\Assets\MLDJ\Script\Obj
|
||
创建人: 罗勇
|
||
功能说明: 陷阱
|
||
修改记录:
|
||
*********************************************************************/
|
||
|
||
using Games.GlobeDefine;
|
||
using Games.Scene;
|
||
using GCGame.Table;
|
||
using UnityEngine;
|
||
|
||
namespace Games.LogicObj
|
||
{
|
||
public class Obj_Snare_Init_Data : Obj_Character_Init_Data
|
||
{
|
||
public int m_state; //0 未激活 1 激活
|
||
|
||
public Obj_Snare_Init_Data()
|
||
{
|
||
CleanUp();
|
||
}
|
||
|
||
public override void CleanUp()
|
||
{
|
||
base.CleanUp();
|
||
m_state = 0;
|
||
}
|
||
}
|
||
|
||
public class Obj_Snare : Obj
|
||
{
|
||
private int m_nOwerobjID = -1;
|
||
private ulong m_OwnerGuid = GlobeVar.INVALID_GUID;
|
||
|
||
private int m_State;
|
||
private int? _effectState;
|
||
|
||
public Obj_Snare()
|
||
{
|
||
m_ObjType = GameDefine_Globe.OBJ_TYPE.OBJ_SNARE;
|
||
}
|
||
|
||
public int OwerobjID
|
||
{
|
||
get { return m_nOwerobjID; }
|
||
set { m_nOwerobjID = value; }
|
||
}
|
||
|
||
public ulong OwnerGuid
|
||
{
|
||
get { return m_OwnerGuid; }
|
||
set { m_OwnerGuid = value; }
|
||
}
|
||
|
||
public override bool Init(ObjParent_Init_Data initData1)
|
||
{
|
||
var result = base.Init(initData1);
|
||
if (result == false)
|
||
return false;
|
||
|
||
var initData = initData1 as Obj_Snare_Init_Data;
|
||
if (initData == null)
|
||
return false;
|
||
//服务器发过来的信息
|
||
OwerobjID = initData.m_OwnerObjId;
|
||
OwnerGuid = initData.m_OwerGuid;
|
||
//var ownerCharacter = Singleton<ObjManager>.GetInstance().FindObjCharacterInScene(OwerobjID);
|
||
////修正陷阱的高度和陷阱释放者一样
|
||
//if (ownerCharacter != null)
|
||
//{
|
||
// var newPosVector3 = m_ObjTransform.position;
|
||
// newPosVector3.y = ownerCharacter.ObjTransform.position.y;
|
||
// m_ObjTransform.position = newPosVector3;
|
||
//}
|
||
var snareInfo = TableManager.GetSnareObjInfoByID(RoleBaseID, 0);
|
||
if (snareInfo == null)
|
||
return false;
|
||
var charModel = TableManager.GetCharModelByID(snareInfo.CharModelId, 0);
|
||
if (null == charModel) return false;
|
||
CreateModel(snareInfo.CharModelId);
|
||
ObjManager.Instance.AddPoolObj(this);
|
||
// RotationType 等于0表示面向摄像机;否则使用ObjParent层的面向。
|
||
if (snareInfo.RotationType == 0)
|
||
{
|
||
// 面朝摄像机正方向
|
||
if (SceneLogic.CameraController != null && SceneLogic.CameraController.MainCamera != null)
|
||
{
|
||
var forward = Vector3.Cross(Vector3.up, SceneLogic.CameraController.MainCamera.transform.right);
|
||
m_ObjTransform.rotation = Quaternion.LookRotation(forward, Vector3.up);
|
||
}
|
||
}
|
||
PlayerEffect(initData.m_state);
|
||
return true;
|
||
}
|
||
|
||
public void PlayerEffect(int state)
|
||
{
|
||
m_State = state;
|
||
if (_effectState != state)
|
||
{
|
||
_effectState = state;
|
||
var snareInfo = TableManager.GetSnareObjInfoByID(RoleBaseID, 0);
|
||
if (snareInfo != null) // && ObjEffectLogic != null)
|
||
{
|
||
var effectCount = snareInfo.getAliveEffectIdCount();
|
||
if (state == 0)
|
||
{
|
||
// 移除激活期特效
|
||
StopEffect(snareInfo.ActivateEffectId);
|
||
// 启动闲置期特效
|
||
for (var i = 0; i < effectCount; i++)
|
||
{
|
||
var effectId = snareInfo.GetAliveEffectIdbyIndex(i);
|
||
if (effectId >= 0)
|
||
PlayEffect(effectId);
|
||
}
|
||
|
||
var soundCount = snareInfo.getAliveSoundIdCount();
|
||
for (var i = 0; i < soundCount; i++)
|
||
{
|
||
var soundId = snareInfo.GetAliveSoundIdbyIndex(i);
|
||
if (soundId >= 0)
|
||
GameManager.gameManager.SoundManager.PlaySoundEffect(soundId);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// 移除闲置期特效
|
||
for (var i = 0; i < effectCount; i++)
|
||
{
|
||
var effectId = snareInfo.GetAliveEffectIdbyIndex(i);
|
||
if (effectId >= 0)
|
||
StopEffect(effectId);
|
||
}
|
||
// 启动激活期特效
|
||
PlayEffect(snareInfo.ActivateEffectId);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} |