Ejemplo n.º 1
0
        // 创建一个金币柱.
        void CreateCylinder(CylinderParam _cp)
        {
            Transform _cylinder = Factory.Create(cylinderPrefab, Vector3.zero, Quaternion.identity);

            _cylinder.parent     = transform;
            _cylinder.localScale = Vector3.one;
            cylinderNumInScene++;

            if (cylinderHaveCreatedList.Count > 0)
            {
                _cylinder.localPosition = new Vector3(cylinderHaveCreatedList[cylinderHaveCreatedList.Count - 1].localPosition.x, 0f, 0f)
                                          - new Vector3(cylinderDistance, 0f, 0f);
            }
            else
            {
                _cylinder.position = _cp.showupPos;
            }

            // _cylinder.rotation = _cp.showupRot;
            _cylinder.localEulerAngles = Vector3.zero;

            _cylinder.GetComponent <SingleCylinder>().Init(_cp.multi, _cp.value, dir);
            cylinderHaveCreatedList.Add(_cylinder);

            if (curCylinderState == CylinderState.finish)
            {
                lerpPercent = 0f;
                curStepPos  = curTrans.localPosition;
                switch (dir)
                {
                case 0:
                    nextStepPos = curTrans.localPosition + new Vector3(cylinderDistance, 0f, 0f);
                    break;

                case 1:
                    nextStepPos = curTrans.localPosition + new Vector3(0f, cylinderDistance, 0f);
                    break;

                case 2:
                    nextStepPos = curTrans.localPosition - new Vector3(cylinderDistance, 0f, 0f);
                    break;

                case 3:
                    nextStepPos = curTrans.localPosition - new Vector3(0f, cylinderDistance, 0f);
                    break;
                }
                curCylinderState = CylinderState.jump;
            }
        }
Ejemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            if (cylinderState != CylinderState.P_LEFT && cylinderState == CylinderState.REST || cylinderState == CylinderState.M_BACK || cylinderState == CylinderState.M_LEFT)
            {
                cylinderState = CylinderState.M_LEFT;
                MoveStick(cylinderState);
            }
        }

        else if (Input.GetKey(KeyCode.RightArrow))
        {
            if (cylinderState != CylinderState.P_RIGHT && cylinderState == CylinderState.REST || cylinderState == CylinderState.M_BACK || cylinderState == CylinderState.M_RIGHT)
            {
                cylinderState = CylinderState.M_RIGHT;
                MoveStick(cylinderState);
            }
        }

        else if (Input.GetKey(KeyCode.UpArrow))
        {
            if (cylinderState != CylinderState.P_UP && cylinderState == CylinderState.REST || cylinderState == CylinderState.M_BACK || cylinderState == CylinderState.M_UP)
            {
                cylinderState = CylinderState.M_UP;
                MoveStick(cylinderState);
            }
        }

        else if (Input.GetKey(KeyCode.DownArrow))
        {
            if (cylinderState != CylinderState.P_DOWN && cylinderState == CylinderState.REST || cylinderState == CylinderState.M_BACK || cylinderState == CylinderState.M_DOWN)
            {
                cylinderState = CylinderState.M_DOWN;
                MoveStick(cylinderState);
            }
        }

        else if (!Input.GetKeyDown(KeyCode.DownArrow) && !Input.GetKeyDown(KeyCode.UpArrow) && !Input.GetKeyDown(KeyCode.LeftArrow) && !Input.GetKeyDown(KeyCode.RightArrow))
        {
            if (cylinderState != CylinderState.REST)
            {
                cylinderState = CylinderState.M_BACK;
                MoveStick(cylinderState);
            }
        }
    }
Ejemplo n.º 3
0
    private void MoveStick(CylinderState state)
    {
        switch (state)
        {
        case CylinderState.M_UP:
            Vector3 upPos = new Vector3(restPosition.x, restPosition.y + 0.5f, restPosition.z);
            cylinderTransform.position = Vector3.MoveTowards(cylinderTransform.position, upPos, stickSpeed * Time.deltaTime);

            if (Vector3.Distance(cylinderTransform.position, upPos) < 0.005f)
            {
                cylinderTransform.position = upPos;
                cylinderState = CylinderState.P_UP;
            }

            break;

        case CylinderState.M_DOWN:
            Vector3 downPos = new Vector3(restPosition.x, restPosition.y - 0.5f, restPosition.z);
            cylinderTransform.position = Vector3.MoveTowards(cylinderTransform.position, downPos, stickSpeed * Time.deltaTime);

            if (Vector3.Distance(cylinderTransform.position, downPos) < 0.005f)
            {
                cylinderTransform.position = downPos;
                cylinderState = CylinderState.P_DOWN;
            }

            break;

        case CylinderState.M_LEFT:
            Vector3 leftPos = new Vector3(restPosition.x, restPosition.y, restPosition.z - 0.5f);
            cylinderTransform.position = Vector3.MoveTowards(cylinderTransform.position, leftPos, stickSpeed * Time.deltaTime);

            if (Vector3.Distance(cylinderTransform.position, leftPos) < 0.005f)
            {
                cylinderTransform.position = leftPos;
                cylinderState = CylinderState.P_LEFT;
            }

            break;

        case CylinderState.M_RIGHT:
            Vector3 rightPos = new Vector3(restPosition.x, restPosition.y, restPosition.z + 0.5f);
            cylinderTransform.position = Vector3.MoveTowards(cylinderTransform.position, rightPos, stickSpeed * Time.deltaTime);

            if (Vector3.Distance(cylinderTransform.position, rightPos) < 0.005f)
            {
                cylinderTransform.position = rightPos;
                cylinderState = CylinderState.P_RIGHT;
            }

            break;

        case CylinderState.M_BACK:
            cylinderTransform.position = Vector3.MoveTowards(cylinderTransform.position, restPosition, stickSpeed * Time.deltaTime);

            if (Vector3.Distance(cylinderTransform.position, restPosition) < 0.005f)
            {
                cylinderTransform.position = restPosition;
                cylinderState = CylinderState.REST;
            }

            break;

        default:
            break;
        }
    }
Ejemplo n.º 4
0
        void Update()
        {
            // 超过五个就要等待.
            if (cylinderNumInScene < 5 && cylinder2CreateList.Count > 0)
            {
                if (Time.time >= targetTime)
                {
                    CreateCylinder(cylinder2CreateList[0]);
                    cylinder2CreateList.Remove(cylinder2CreateList[0]);
                    targetTime = Time.time + cylinderCreateTimeGap;
                }
            }

            switch (curCylinderState)
            {
            case CylinderState.jump:
                lerpPercent += Time.deltaTime;
                if (lerpPercent > wait4CylinderMoveUpTimeLength)
                {
                    lerpPercent      = 0f;
                    curCylinderState = CylinderState.moveWait;
                }
                break;

            case CylinderState.move:
                lerpPercent           += Time.deltaTime * cylinderMoveSpeed;
                curTrans.localPosition = Vector3.Lerp(curStepPos, nextStepPos, lerpPercent);
                if (lerpPercent > 1f)
                {
                    lerpPercent = 0f;
                    curStepPos  = curTrans.localPosition;
                    switch (dir)
                    {
                    case 0:
                        nextStepPos = curTrans.localPosition + new Vector3(cylinderDistance, 0f, 0f);
                        break;

                    case 1:
                        nextStepPos = curTrans.localPosition + new Vector3(0f, cylinderDistance, 0f);
                        break;

                    case 2:
                        nextStepPos = curTrans.localPosition - new Vector3(cylinderDistance, 0f, 0f);
                        break;

                    case 3:
                        nextStepPos = curTrans.localPosition - new Vector3(0f, cylinderDistance, 0f);
                        break;
                    }
                    curCylinderState = CylinderState.moveWait;
                }
                break;

            case CylinderState.moveWait:
                lerpPercent += Time.deltaTime;
                if (lerpPercent >= moveOneStepWaitLength)
                {
                    lerpPercent = 0f;
                    int _count = cylinderHaveCreatedList.Count;
                    for (int i = 0; i < _count; i++)
                    {
                        switch (dir)
                        {
                        case 0:
                            if (cylinderHaveCreatedList[i].position.x >= targetPos.x)
                            {
                                cylinderHaveCreatedList[i].GetComponent <SingleCylinder>().Recycle();
                                cylinderNumInScene--;
                                cylinderHaveCreatedList.Remove(cylinderHaveCreatedList[i]);
                                if (cylinderHaveCreatedList.Count == 0)
                                {
                                    curTrans.position = showUpPos;
                                    curCylinderState  = CylinderState.finish;
                                }
                                return;
                            }
                            break;

                        case 1:
                            if (cylinderHaveCreatedList[i].position.y >= targetPos.y)
                            {
                                cylinderHaveCreatedList[i].GetComponent <SingleCylinder>().Recycle();
                                cylinderNumInScene--;
                                cylinderHaveCreatedList.Remove(cylinderHaveCreatedList[i]);
                                if (cylinderHaveCreatedList.Count == 0)
                                {
                                    curTrans.position = showUpPos;
                                    curCylinderState  = CylinderState.finish;
                                }
                                return;
                            }
                            break;

                        case 2:
                            if (cylinderHaveCreatedList[i].position.x <= targetPos.x)
                            {
                                cylinderHaveCreatedList[i].GetComponent <SingleCylinder>().Recycle();
                                cylinderNumInScene--;
                                cylinderHaveCreatedList.Remove(cylinderHaveCreatedList[i]);
                                if (cylinderHaveCreatedList.Count == 0)
                                {
                                    curTrans.position = showUpPos;
                                    curCylinderState  = CylinderState.finish;
                                }
                                return;
                            }
                            break;

                        case 3:
                            if (cylinderHaveCreatedList[i].position.y <= targetPos.y)
                            {
                                cylinderHaveCreatedList[i].GetComponent <SingleCylinder>().Recycle();
                                cylinderNumInScene--;
                                cylinderHaveCreatedList.Remove(cylinderHaveCreatedList[i]);
                                if (cylinderHaveCreatedList.Count == 0)
                                {
                                    curTrans.position = showUpPos;
                                    curCylinderState  = CylinderState.finish;
                                }
                                return;
                            }
                            break;
                        }
                    }
                    curCylinderState = CylinderState.move;
                }
                break;

            default:
                break;
            }
        }
Ejemplo n.º 5
0
	void  Start (){
		disable_springs = false;
		if(transform.FindChild("slide")){
			var slide= transform.FindChild("slide");
			has_slide = true;
			slide_rel_pos = slide.localPosition;
			if(slide.FindChild("auto mod toggle")){
				has_auto_mod = true;
				auto_mod_rel_pos = slide.FindChild("auto mod toggle").localPosition;
				if(Random.Range(0,2) == 0){
					auto_mod_amount = 1.0f;
					auto_mod_stage = AutoModStage.ENABLED;
				}
			}
		}
		var hammer= GetHammer();
		if(hammer){
			has_hammer = true;
			hammer_rel_pos = hammer.localPosition;
			hammer_rel_rot = hammer.localRotation;
		}
		var yolk_pivot= transform.FindChild("yolk_pivot");
		Transform extractor_rod = null;
		if(yolk_pivot){
			yolk_pivot_rel_rot = yolk_pivot.localRotation;
			var yolk= yolk_pivot.FindChild("yolk");
			if(yolk){
				var cylinder_assembly= yolk.FindChild("cylinder_assembly");
				if(cylinder_assembly){
					extractor_rod = cylinder_assembly.FindChild("extractor_rod");
					if(extractor_rod){
						extractor_rod_rel_pos = extractor_rod.localPosition;
					}
				}
			}
		}
		
		if(gun_type == GunType.AUTOMATIC){
			magazine_instance_in_gun = Instantiate(magazine_obj);
			magazine_instance_in_gun.transform.parent = transform;
		
			var renderers= magazine_instance_in_gun.GetComponentsInChildren<Renderer>();
			foreach(Renderer renderer in renderers){
				renderer.shadowCastingMode = ShadowCastingMode.Off; 
			}
			
			if(Random.Range(0,2) == 0){
				round_in_chamber = Instantiate(casing_with_bullet, transform.FindChild("point_chambered_round").position, transform.FindChild("point_chambered_round").rotation) as GameObject;
				round_in_chamber.transform.parent = transform;
				round_in_chamber.transform.localScale = new Vector3(1.0f,1.0f,1.0f);
				renderers = round_in_chamber.GetComponentsInChildren<Renderer>();
				foreach(Renderer renderer in renderers){
					renderer.shadowCastingMode = ShadowCastingMode.Off; 
				}
			}
			
			if(Random.Range(0,2) == 0){
				slide_amount = kSlideLockPosition;
				slide_lock = true;
			}
		}
		
		if(gun_type == GunType.REVOLVER){
			cylinders = new CylinderState[cylinder_capacity];
			for(var i=0; i<cylinder_capacity; ++i){
				cylinders[i] = new CylinderState();
				if(Random.Range(0,2) == 0){
					continue;
				}
				var name= "point_chamber_"+(i+1);
				cylinders[i]._object = Instantiate(casing_with_bullet, extractor_rod.FindChild(name).position, extractor_rod.FindChild(name).rotation) as GameObject;
				cylinders[i]._object.transform.localScale = new Vector3(1.0f,1.0f,1.0f);
				cylinders[i].can_fire = true;
				cylinders[i].seated = Random.Range(0.0f,0.5f);
				var renderers = cylinders[i]._object.GetComponentsInChildren<Renderer>();
				foreach(Renderer renderer in renderers){
					renderer.shadowCastingMode = ShadowCastingMode.Off;
				}
			}
		}
		
		if(Random.Range(0,2) == 0 && has_hammer){
			hammer_cocked = 0.0f;
		}
		
		if(transform.FindChild("safety")){
			has_safety = true;
			safety_rel_pos = transform.FindChild("safety").localPosition;
			safety_rel_rot = transform.FindChild("safety").localRotation;
			if(Random.Range(0,4) == 0){
				safety_off = 0.0f;
				safety = Safety.ON;
				slide_amount = 0.0f;
				slide_lock = false;
			}
		}
		
	}
Ejemplo n.º 6
0
 public override void ManipulateRight()
 {
     if(state == CylinderState.Open){
         state = CylinderState.Closed;
     }
 }
Ejemplo n.º 7
0
 public override void ManipulateLeft()
 {
     if(state == CylinderState.Closed){
         state = CylinderState.Open;
     }
 }
Ejemplo n.º 8
0
 void OnEnable()
 {
     ui.gameObject.SetActive (true);
     state = CylinderState.Closed;
     for(int i = 0; i < chambers.Length; i++){
         chambers[i] = BulletState.Live;
     }
     Update();
 }