{"id":25982,"date":"2025-05-06T06:21:43","date_gmt":"2025-05-05T21:21:43","guid":{"rendered":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25982"},"modified":"2025-05-06T06:21:44","modified_gmt":"2025-05-05T21:21:44","slug":"unity-player-cs","status":"publish","type":"post","link":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25982","title":{"rendered":"Unity player.cs"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>using Photon.Pun;\nusing System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\n\npublic class Player : Entity\n{\n    CameraFollow follow;\n    &#91;SerializeField]\n    float rotSpeed = 2;\n    &#91;SerializeField]\n    float scrollAmount = 3;\n    &#91;SerializeField]\n    float minZoom = 10, maxZoom = 120;\n    ActionController controller;\n    const float second = 1;\n    float manaCounter = 1;\n    public SaveData data = new SaveData();\n    \/\/ Start is called before the first frame update\n    public override void Init()\n    {\n        base.Init();\n        if (!photonView.IsMine) return;\n        data = SaveManager.LoadData&lt;SaveData>(data.characterName);\n        if(data==null)\n        {\n            data = new SaveData();\n        }\n        controller = GetComponent&lt;ActionController>();\n        controller.sync = sync;\n        controller.Init(this);\n        var f = Resources.Load&lt;CameraFollow>(StaticStrings.follow);\n        follow = Instantiate(f, transform.position, transform.rotation);\n        follow.Init(transform);\n        WorldManager.instance.playerList.Add(transform);\n        UIManager.instance.player = this;\n        onDeathEvent = () =>\n        {\n            UIManager.instance.deathPanel.SetActive(true);\n        };\n    }\n\n    public override void Tick()\n    {\n        UseCamera();\n        if(controller.mana&lt;stats.mana)\n        {\n            manaCounter -= Time.deltaTime;\n            if (manaCounter&lt;=0)\n            {\n                manaCounter = second;\n                controller.mana += stats.manaXSecond;\n                if (controller.mana > stats.mana) controller.mana = stats.mana;\n            }\n        }\n        if (!CanMove()) return;\n        float x = Input.GetAxisRaw(StaticStrings.horizontal);\n        float y = Input.GetAxisRaw(StaticStrings.vertical);\n        Vector3 move = (transform.right * x) + (transform.forward * y);\n        move *= Time.deltaTime * moveMultipler * moveSpeed;\n        move.y = rb.velocity.y;\n        rb.velocity = move;\n        sync.Move(x, y);\n        controller.Tick(follow.transform,x,y);\n    }\n\n    void UseCamera()\n    {\n        float x = Input.GetAxis(StaticStrings.mouseX);\n        float scroll = Input.GetAxisRaw(StaticStrings.scroll);\n        Vector3 rot = follow.arm.rotation.eulerAngles;\n        follow.transform.rotation = Quaternion.Euler(rot.x, rot.y + x * rotSpeed, rot.z);\n        if(scroll!=0)\n        {\n            float val = scrollAmount * scroll;\n            val += follow.cam.fieldOfView;\n            val = Mathf.Clamp(val, minZoom, maxZoom);\n            follow.cam.fieldOfView = val;\n        }\n    }\n\n    bool CanMove()\n    {\n        if (isDeath) return false;\n        return true;\n    }\n\n    public void Respawn()\n    {\n        transform.position = WorldManager.instance.respawnPoint.position;\n        isDeath = false;\n        hp = stats.maxHp;\n        sync.IsDead(false);\n        if(Photon.Pun.PhotonNetwork.IsConnected)\n        {\n            view.RPC(\"SyncronizeStat\", Photon.Pun.RpcTarget.All, hp);\n        }\n    }\n}\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[29,44],"tags":[35,3],"class_list":["post-25982","post","type-post","status-publish","format-standard","hentry","category-unity","category-44","tag-c","tag-programming"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=25982"}],"version-history":[{"count":1,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25982\/revisions"}],"predecessor-version":[{"id":25983,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25982\/revisions\/25983"}],"wp:attachment":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25982"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}