132 lines
3.6 KiB
C#
132 lines
3.6 KiB
C#
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using Unity.VisualScripting;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.UIElements;
|
|||
|
using System.Linq;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
public class jez_Bullet : Bullet
|
|||
|
{
|
|||
|
|
|||
|
private bool isReturning = false; // <20><><EFBFBD>ǵ<EFBFBD>ǰ<EFBFBD>Ƿ<EFBFBD><C7B7>ڷ<EFBFBD><DAB7>ؽ<D8BD>
|
|||
|
private Vector3 startPosition; // <20>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
|
|||
|
private Vector3 targetPosition; // <20>ӵ<EFBFBD><D3B5><EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD><CEBB>
|
|||
|
|
|||
|
|
|||
|
private void Start()
|
|||
|
{
|
|||
|
// <20><>¼<EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>ʼλ<CABC><CEBB>
|
|||
|
startPosition = transform.position;
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ǰ<EFBFBD>ƶ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>룩
|
|||
|
targetPosition = startPosition + transform.up * (role.AttackRange+2);
|
|||
|
}
|
|||
|
|
|||
|
private void Update()
|
|||
|
{
|
|||
|
switch (this.bulletMoveType)
|
|||
|
{
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ƶ<EFBFBD>
|
|||
|
case BulletMoveType.PeerToPeer:
|
|||
|
if (IsMove)
|
|||
|
{
|
|||
|
if (!isReturning)
|
|||
|
{
|
|||
|
// <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
|
|||
|
transform.position = Vector3.MoveTowards(transform.position, targetPosition, Time.deltaTime * bulletData.BulletSpeed);
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>㣬<EFBFBD><E3A3AC>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
if (Vector3.Distance(transform.position, targetPosition) < 0.1f)
|
|||
|
{
|
|||
|
isReturning = true; // <20>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<D8BD>
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// <20><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>ʼλ<CABC><CEBB>
|
|||
|
transform.position = Vector3.MoveTowards(transform.position, startPosition, Time.deltaTime * bulletData.BulletSpeed);
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC>ã<EFBFBD>ֹͣ<CDA3>ƶ<EFBFBD><C6B6><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (Vector3.Distance(transform.position, startPosition) < 0.1f)
|
|||
|
{
|
|||
|
IsMove = false; // ֹͣ<CDA3>ƶ<EFBFBD>
|
|||
|
Destroy(this.gameObject);
|
|||
|
Debug.Log("<22><><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7>ص<EFBFBD><D8B5><EFBFBD>ʼλ<CABC><CEBB>");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case BulletMoveType.PointToDirection:
|
|||
|
// ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
|||
|
break;
|
|||
|
|
|||
|
case BulletMoveType.Scope:
|
|||
|
// ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void OnTriggerEnter2D(Collider2D collision)
|
|||
|
{
|
|||
|
Role Crole = collision.gameObject.GetComponent<Role>();
|
|||
|
if (Crole)
|
|||
|
{
|
|||
|
if (Crole.camp != role.camp)
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
foreach (var buff in role.storageBuff)
|
|||
|
{
|
|||
|
if (!Crole.PlayerBuff.Contains(buff))
|
|||
|
{
|
|||
|
Crole.PlayerBuff.Add(buff);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
Crole.ApplyBuffs();
|
|||
|
|
|||
|
// Debug.Log(this.role.gameObject.name + "<22><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
int direction = 0;
|
|||
|
if (collision.transform.position.x > transform.position.x) //<2F>ӵ<EFBFBD><D3B5><EFBFBD><F2B5BDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ұ<EFBFBD>
|
|||
|
{
|
|||
|
direction = 1;
|
|||
|
}
|
|||
|
Crole.bloodLoss(new object[] { Crole, role.DamageCreate(Crole.GetComponent<Role>()), attackObj.damageTyp, role }, direction);
|
|||
|
Crole.FlashRedEffect();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
private void OnTriggerStay2D(Collider2D collision)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
private void OnTriggerExit2D(Collider2D collision)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|