private void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Block" && count == 0 || collision.gameObject.tag == "DestroyArea" || collision.gameObject.tag == "Player") { if (collision.gameObject.tag == "Block") { blockCtl.BlockBool(collision.gameObject.transform.position); } else if (collision.gameObject.tag == "Player") { PlayerCtl playerCtl = collision.gameObject.GetComponent <PlayerCtl>(); if (playerCtl.GetState() != PlayerCtl.PlayerState.Damage) { playerCtl.SetState(PlayerCtl.PlayerState.Damage); } } count++; if (!gameManager.gameClear) { Instantiate(explosion, this.transform.position, Quaternion.identity); gameManager.positionShell(); } Destroy(gameObject); } }
//ユニット作成(リスト追加は外部で実施すること) public static UnitObj Create(String _name, Unit _type, Vector2Int _pos, PlayerCtl _player) { UnitObj newObj = Instantiate(_player.utltList.FirstOrDefault(u => u.units == _type)); //対象のシェーダー情報を取得 Shader sh = _player.utltList.FirstOrDefault(u => u.units == _type).transform.GetComponent <SpriteRenderer>().material.shader; //Find("Texture"). //取得したシェーダーを元に新しいマテリアルを作成 Material mat = new Material(sh); newObj.transform.GetComponent <SpriteRenderer>().material = mat; //Find("Texture"). newObj.name = _name; newObj.pos = _pos; newObj.old_pos = _pos; newObj.hp = newObj.hpMax; newObj.fuel = newObj.fuelMax; newObj.gameObject.SetActive(true); //表示 newObj.lock_max = UnityEngine.Random.Range(10, 100); newObj.player = _player; newObj.gameObject.SetActive(true); newObj.GetComponent <SpriteRenderer>().color = _player.pColor; newObj.chgWorkType(WorkType.Newing); newObj.gameObject.name = "Obj_" + _player.pnum + "_" + _type.ToString(); _player.vMap.moveAdd(_pos, 3); if (newObj.type != uType.Building) { StageCtl.UnitList[newObj.player.pnum].Insert(0, newObj); //先頭 } else { StageCtl.UnitList[newObj.player.pnum].Add(newObj); //末尾 } newObj.transform.position = map.GetComponent <Grid>().GetCellCenterWorld(new Vector3Int(MapCtl.offset_stg2tile_x(_pos.x), MapCtl.offset_stg2tile_y(_pos.y), 0)) - new Vector3(0f, 0f, 1f); return(newObj); }
// Use this for initialization void Start() { playerCtl = GetComponent <PlayerCtl>(); characterStateActVer = new State(gameObject); Debug.Log(playerCtl.charcter_state[0]); foreach (State state in playerCtl.charcter_state) { InputTran += new InputEventHandler(state.handleInput);//向所有状态发送事件 } }
//ユニット情報初期化(ゲーム開始時に必ずコールすること) public static List <UnitObj> initUnitTlt(PlayerCtl p) { List <UnitObj> uObjTlt = new List <UnitObj>(); //ユニットテンプレートを追加 //_image, _type, _units, _cost, _hpMax, int _fuelMax, _fuelEfc, float _speedMax, float _yawMax uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.None, Unit.None, 100, 100, 100, 2, 10, 10)); /* なし */ uObjTlt.Add(addObjTlt("001/I1_Infantry", uType.Infantry, Unit.Infantry, 100, 100, 100, 2, 10, 10)); /* 歩兵隊 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Vehicle, Unit.Tank, 100, 100, 100, 2, 10, 10)); /* 戦車隊 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Vehicle, Unit.Artillery, 100, 100, 100, 2, 10, 10)); /* 砲兵隊 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Vehicle, Unit.AntiAircraft, 100, 100, 100, 2, 10, 10)); /* 高射砲隊 */ uObjTlt.Add(addObjTlt("001/V4_Track", uType.Vehicle, Unit.Transport, 100, 100, 100, 2, 10, 10)); /* 輸送車 */ uObjTlt.Add(addObjTlt("001/V4_Track", uType.Vehicle, Unit.LargeTransport, 100, 100, 100, 2, 1, 1)); /* 大型輸送車 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Warship, Unit.Battleship, 100, 100, 100, 2, 10, 10)); /* 戦艦 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Warship, Unit.Cruiser, 100, 100, 100, 2, 10, 10)); /* 巡洋艦 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Warship, Unit.Destroyer, 100, 100, 100, 2, 10, 10)); /* 駆逐艦 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Warship, Unit.Carrier, 100, 100, 100, 2, 10, 10)); /* 空母 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Warship, Unit.LightCarrier, 100, 100, 100, 2, 10, 10)); /* 軽空母 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Submarine, Unit.Submarine, 100, 100, 100, 2, 10, 10)); /* 潜水艦 */ uObjTlt.Add(addObjTlt("001/M7_TransportShip", uType.Warship, Unit.TransportShip, 100, 100, 100, 2, 1, 1)); /* 輸送艦 */ uObjTlt.Add(addObjTlt("001/M7_TransportShip", uType.Warship, Unit.LargeTransportShip, 100, 100, 100, 2, 1, 1)); /* 大型輸送艦 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Warship, Unit.Tanker, 100, 100, 100, 2, 10, 10)); /* 油槽船 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Warship, Unit.LargeTanker, 100, 100, 100, 2, 10, 10)); /* 大型油槽船 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Warship, Unit.RepairShip, 100, 100, 100, 2, 10, 10)); /* 工作艦 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Aircraft, Unit.Surveillance, 100, 100, 100, 3, 3.5f, 2.5f)); /* 偵察機 */ uObjTlt.Add(addObjTlt("001/A2_Fighter", uType.Aircraft, Unit.Fighter, 100, 100, 100, 2, 3.0f, 2.0f)); /* 戦闘機 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Aircraft, Unit.Attacker, 100, 100, 100, 2, 10, 10)); /* 攻撃機 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Aircraft, Unit.Bomber, 100, 100, 100, 2, 10, 10)); /* 爆撃機 */ uObjTlt.Add(addObjTlt("001/A2_Fighter", uType.Aircraft, Unit.LandFighter, 100, 100, 100, 2, 2.0f, 1.5f)); /* 陸上戦闘機 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Aircraft, Unit.HeavyBomber, 100, 100, 100, 1, 10, 10)); /* 大型爆撃機 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Aircraft, Unit.CargoAircraft, 100, 100, 100, 3, 10, 10)); /* 輸送機 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Building, Unit.Urban, 100, 100, 100, 2, 10, 10)); /* 都市 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Building, Unit.Capital, 100, 100, 100, 2, 0, 0)); /* 首都 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Building, Unit.Factory, 100, 100, 100, 2, 0, 0)); /* 工場 */ uObjTlt.Add(addObjTlt("001/B4_OilWell", uType.Building, Unit.OilWell, 100, 100, 100, 2, 0, 0)); /* 油井 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Building, Unit.Refinery, 100, 100, 100, 2, 0, 0)); /* 製油所 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Building, Unit.Airfield, 100, 100, 100, 2, 0, 0)); /* 飛行場 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Building, Unit.NavalPort, 100, 100, 100, 2, 0, 0)); /* 軍港 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Building, Unit.Camp, 100, 100, 100, 2, 0, 0)); /* 野営地 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Building, Unit.Base, 100, 100, 100, 2, 0, 0)); /* 基地 */ uObjTlt.Add(addObjTlt("001/B2_Refinery", uType.Building, Unit.Fortress, 100, 100, 100, 2, 0, 0)); /* 要塞 */ return(uObjTlt); }
//ユニット情報を登録(type 1:歩兵/2:車両/3:飛行機/4:船舶) public UnitObj AddUnit(String name, Vector2Int point, PlayerCtl player, Unit type) { //UnitObj unit = Instantiate(baseUnit); //unit.Initialize(name, type, point, player, moveAmount, hp, fuel, atkmin, atkmax, atk, image); UnitObj unit = UnitObj.Create(name, type, point, player); //unit.gameObject.SetActive(true); //if (player.pnum == 0){ // unit.GetComponent<SpriteRenderer>().color = new Color(0.75f, 0.0f, 0.0f, 1.0f); //red transform.Find("Texture"). //} else { // unit.transform.GetComponent<SpriteRenderer>().color = new Color(0.0f, 0.0f, 0.75f, 1.0f); //blue //} //unit.transform.position = map.GetComponent<Grid>().GetCellCenterWorld( new Vector3Int( MapCtl.offset_stg2tile_x(point.x), MapCtl.offset_stg2tile_y(point.y), 0 ) ) - new Vector3(0f, 0f, 1f); //if (unit.type != uType.Building){ // UnitList[player.pnum].Insert(0, unit); //先頭 //} else { // UnitList[player.pnum].Add(unit); //末尾 //} return(unit); }
public State(GameObject _Player) { this.Player = _Player; this.playerCtl = _Player.GetComponent <PlayerCtl>(); }