179 lines
4.9 KiB
C#
179 lines
4.9 KiB
C#
// ***********************************************************************
|
|
// Assembly : Game
|
|
// Author : Kimch
|
|
// Created : 2020-09-02
|
|
// Description :
|
|
// Last Modified By :
|
|
// Last Modified On :
|
|
// ***********************************************************************
|
|
// <copyright file= "Ef_swing1_ride" company="Kimch"></copyright>
|
|
// <summary></summary>
|
|
// ***********************************************************************
|
|
using UnityEngine;
|
|
|
|
namespace G
|
|
{
|
|
public class Ef_swing1_ride : MonoBehaviour
|
|
{
|
|
private int uvAnimationTileX;
|
|
|
|
private int uvAnimationTileY;
|
|
|
|
private int framesPerSecond = 20;
|
|
|
|
private int index;
|
|
|
|
private int oldindex = -1;
|
|
|
|
private float starttime;
|
|
|
|
private int lastframe;
|
|
|
|
private bool efon;
|
|
|
|
private float delay;
|
|
|
|
private int impactframe = 1;
|
|
|
|
private Rigidbody cha_rigidbody;
|
|
|
|
public Transform pt_hit;
|
|
|
|
private Vector2 size;
|
|
|
|
private Vector2 offset;
|
|
|
|
private float uIndex;
|
|
|
|
private int vIndex;
|
|
|
|
private Pt_hit script_pthit;
|
|
|
|
private short layerindex;
|
|
|
|
private bool layerchange;
|
|
|
|
private bool pton;
|
|
|
|
private short rndefamount;
|
|
|
|
private int addforce;
|
|
|
|
private Renderer myrenderer;
|
|
|
|
private Collider mycollider;
|
|
|
|
private void Awake()
|
|
{
|
|
myrenderer = this.GetComponent<Renderer>();
|
|
mycollider = this.GetComponent<Collider>();
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
GameObject gameObject = this.transform.root.gameObject;
|
|
cha_rigidbody = gameObject.GetComponent<Rigidbody>();
|
|
script_pthit = pt_hit.GetComponent<Pt_hit>();
|
|
Physics.IgnoreCollision(gameObject.GetComponent<Collider>(), mycollider);
|
|
starttime = 0f;
|
|
myrenderer.enabled = false;
|
|
mycollider.isTrigger = true;
|
|
mycollider.enabled = false;
|
|
delay = 0f;
|
|
this.gameObject.SetActive(false);
|
|
}
|
|
|
|
public void SwingOn(float _delay, int cnt_x, int cnt_y, int uvspeed, int impact, int _addforce)
|
|
{
|
|
this.gameObject.layer = GameLayer.NormalAttack;
|
|
this.gameObject.SetActive(true);
|
|
delay = _delay;
|
|
efon = true;
|
|
uvAnimationTileX = cnt_x;
|
|
uvAnimationTileY = cnt_y;
|
|
lastframe = uvAnimationTileX * uvAnimationTileY;
|
|
framesPerSecond = uvspeed;
|
|
impactframe = impact;
|
|
addforce = _addforce;
|
|
size = new Vector2(1f / uvAnimationTileX, 1f / uvAnimationTileY);
|
|
if (layerchange)
|
|
{
|
|
if (rndefamount > GlobalUtils.RndHundred)
|
|
{
|
|
this.gameObject.layer = layerindex;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SwingOff()
|
|
{
|
|
efon = false;
|
|
this.gameObject.SetActive(false);
|
|
myrenderer.enabled = false;
|
|
mycollider.enabled = false;
|
|
pton = false;
|
|
oldindex = -1;
|
|
index = 0;
|
|
starttime = 0f;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (efon)
|
|
{
|
|
if (delay > 0f)
|
|
{
|
|
delay -= Time.deltaTime;
|
|
}
|
|
else
|
|
{
|
|
if (addforce > 0)
|
|
{
|
|
cha_rigidbody.AddForce(base.transform.root.forward * addforce);
|
|
}
|
|
myrenderer.enabled = true;
|
|
starttime = 0f;
|
|
efon = false;
|
|
}
|
|
}
|
|
if (!myrenderer.enabled)
|
|
{
|
|
return;
|
|
}
|
|
starttime += Time.deltaTime;
|
|
index = (int)(starttime * framesPerSecond);
|
|
uIndex = index % uvAnimationTileX;
|
|
vIndex = index / uvAnimationTileX;
|
|
if (index == oldindex)
|
|
{
|
|
return;
|
|
}
|
|
if (index >= lastframe)
|
|
{
|
|
myrenderer.enabled = false;
|
|
base.gameObject.SetActive(false);
|
|
mycollider.enabled = false;
|
|
pton = false;
|
|
oldindex = -1;
|
|
}
|
|
else if (index == impactframe || index == impactframe + 1)
|
|
{
|
|
mycollider.enabled = true;
|
|
if (!pton)
|
|
{
|
|
script_pthit.ParticleOn();
|
|
pton = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
mycollider.enabled = false;
|
|
}
|
|
offset = Vector2.right * uIndex * size.x + Vector2.up * (1f - size.y - vIndex * size.y);
|
|
myrenderer.material.mainTextureOffset = offset;
|
|
myrenderer.material.mainTextureScale = size;
|
|
oldindex = index;
|
|
}
|
|
}
|
|
}
|